美文网首页
《Android第一行代码》first reading 二

《Android第一行代码》first reading 二

作者: 威宸 | 来源:发表于2017-01-05 15:03 被阅读0次

    活动(activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户进行交互。

    在AndroidManifest文件中注册

    所有的活动都需要在AndroidManifest.xml中注册。不过Android Studio会自动进行注册

    <application    android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".FirstActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />     
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       </application>
    
    在<application>标签中:

    android:icon设置APP的图标,安装在手机上的APP图标就是这个。
    android:label设置APP的标题,安装在手机上的APP标题就是这个。
    通过<activity>标签来进行活动注册。

    Toast提示

    Toast.makeText(FirstActivity.this,"这是按钮",Toast.LENGTH_SHORT).show();
    Toast通过静态方法makeText()创建,让后调用show()将其显示出来。
    makeText()方法需要3个参数:

    • Context
    • Toast所需文本
    • Toast所需时长 有两个内置常量Toast.LENGTH_SHORT和Toast.LENGTH_LONG

    Menu菜单

    1. res中新建一个menu文件夹,在menu中建立新建布局文件。
    menu.png
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/add_item"
            android:title="Add"/>
        <item android:id="@+id/remove_item"
            android:title="Remove"/>
        <item android:id="@+id/finish_item"
            android:title="Finish"/>
    </menu>
    

    <item>标签就是用来创建具体的某一项菜单项。

    • 在Activity中重写onCreateOptionsMenu()方法【快捷键Ctrl+o】
    @Overridepublic boolean onCreateOptionsMenu(Menu menu)
    {
    //通过getMenulnflater()方法能够得到MenuInflater对象,再调用它的inflate()方法就可以给当前活动创建菜单了。
    //inflate方法两个参数,第一个用于指定我们通过哪一个资源文件,第二个用于指定我们的菜单项添加到哪一个menu对象中。
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }
    
    • 继续重写onOptionsItemSelected()方法,为菜单添加响应事件
    @Overridepublic boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.add_item:
                Toast.makeText(FirstActivity.this,"这是add按钮",Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(FirstActivity.this,"这是remove按钮",Toast.LENGTH_SHORT).show();
                break;
            case R.id.finish_item:
                Toast.makeText(FirstActivity.this,"这是finish按钮",Toast.LENGTH_SHORT).show();
                finish();//关闭当前活动
                break;
        }
        return true;
    }
    

    Intent

    Intent是Android程序中各个组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。

    1. 显式Intent

    Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
    startActivity(intent);
    

    2. 隐式Intent

    在AndroidManifest.xml中的<activity>标签下配置<intent-filter>的内容,其中可以指定<action>,<category>,<data>三个标签:

    <activity android:name=".ThirdActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="http" />
        </intent-filter>
    </activity>
    

    当<action><category>中的内容同时能够匹配上Intent中指定的action和actegory时,这个活动才能响应该Intent。<data>标签用于更精确地指定当前活动能够响应什么类型的数据。

    <data>标签配置
    • android:scheme 用于指定数据的协议部分
    • android:host 用于指定数据的主机名部分
    • android:port 用与指定数据的端口部分
    • android:path 用于指定主机名和端口之后的部分
    • android:mimeType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定。

    3. Intent数据传递

    - 向下一个活动传递数据

    通过putExtra()方法传递一个字符串

    Intent intent = new Intent();
    intent.putExtra("data","Hello SecondActivity");
    startActivity(intent);
    

    通过getIntent()方法获取到启动activity的Intent,让后通过getStringExtra取得字符串。

    Intent intent = getIntent();
    String data = intent.getStringExtra("data");
    Log.d("SecondActivity",data);
    
    - 返回数据给上一个活动

    可通过startActivityForResult()方法实现。该方法期望活动结束后返回一个j结果给上一个活动。其接受两个参数:Intent和请求码。请求码唯一。

    //FirstActivity中
    Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
    startActivityForResult(intent,1);
    
    //SecondActivity
    button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intentClick = new Intent();
                    intentClick.putExtra("data_return","Hello FirstActivity");
    //setResult()方法中,第一个参数用于向上一个活动返回处理结果,第二个参数则是带有数据的Intent。
                    setResult(RESULT_OK,intentClick);
                    finish();
                }
            }
    );
    
    //FirstActivity中重写onActivityResult()方法
    //该方法带有三个参数:
    //requestCode 请求码、resultCode 返回数据时传入的结果集、data 带参的Intent
    @Overrideprotected void onActivityResult(int requestCode, int
     resultCode, Intent data) {
        switch (requestCode){
            case 1:
                if (resultCode == RESULT_OK){
                    String returnedData = data.getStringExtra("data_return");
                    Log.d("FirstActivity",returnedData);
                }
                break;
            default:
        }
    }
    
    //还可以在SecondActivity中重写onBackPressed()方法实现点击Back键返回数据
    @Overridepublic void onBackPressed() {
        Intent intent = new Intent();
        intent.putExtra("data_return","Hello FirstActivity");
        setResult(RESULT_OK,intent);
        finish();
    }
    

    当然上面的内容只是一部分而已,想更深入的了解还得在继续研究。同样我还找到一些其他的资料,比如:
    intent Filter
    其他人的阅读笔记
    Android Developers
    这里仅仅是我记录的部分笔记,以备回顾记忆
    如有侵权请联系我,我将进行修改和删除

    相关文章

      网友评论

          本文标题:《Android第一行代码》first reading 二

          本文链接:https://www.haomeiwen.com/subject/aqpovttx.html