关于Activity

Activity 定义

Activity 是一种可以包含用户界面的组件,主要用于跟用户交互。

1.1 Activity 的注册

1.1.1 Activity 一般注册

一个 Activity 要正常启动必须要在 Manifest 文件中的 application 标签中注册,注册方式如下:

<activity android:name="包名" /activity>

1.1.2 主 Activity 注册

主 Activity 的注册方式有所差异,如下:

<activity android:name=".FirstActivity"
    android:lable="This is Activity Title">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

1.2 Activity 之间的跳转

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

Intent 一般用于启动活动、启动服务、发送广播等场景。

Intent 分为两种:显式 Intent 和 隐式 Intent。

1.2.1 显式 Intent 用法

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

1.2.2 隐式 Intent 用法

  • 第一步、在 Manifest 文件中注册如下:

    <activity android:name=".SecondActivity"
        <intent-filter>
            <action android:name="com.demo.thorn.ACTION_START"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>
    
  • 第二步、在需要跳转的地方:

    Intent intent = new Intent("com.demo.thorn.ACTION_START";)
    startActivity(intent);
    

1.2.3 更多隐式 Intent 用法

  • 调用系统 Action 启动浏览器

    Intent intent = new Intent(Intent.ACTION_VIEW);
    Intent.setData(Url.parse("http://www.baidu.com/"));
    startActivity(intent);
    
  • 调用系统 Action 启动浏览器

    Intent intent = new Intent(Intent.ACTION_DIAL);
    Intent.setData(Url.parse("tel:10086"));
    startActivity(intent);
    

1.3 Activity 之间的数据传递

Activity 之间的数据传递很常用,传递的数据类型也有很多,比如字符串、整数型、序列化的对象等等

1.3.1 向下一个 Activity 传数据(A 传给 B)

  • 第一步、A 中代码:

    String data = "Hello SecondActivity";
    Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
    intent.putExtra("DataTag",data);
    startActivity(intent);
    
  • 第二步、B 中代码:

    Intent intent = getIntent();
    String data = intent.getStringExtra("DataTag");
    

1.3.2 返回数据给上一个 Activity(B 返回数据给 A)

  • A 中代码:

    Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
    startActivityForResult(intent,13);
    
  • B 中代码:

    Intent intent = new Intent();
    intent.putExtra("DataReturnTag","this is return data");
    setResult(RESULT_OK,intent);//这里有两种选择 RESULT_OK 和 RESULT_CANCELED
    finish();
    
  • A 中再接受 B 返回的数据,复写如下方法:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
            if(requestCode==13 && resultCode==RESULT_OK){
                textView.setText(data.getStringExtra("cur_time"));
            }
    }
    

猜你喜欢

转载自blog.csdn.net/baidu_33221362/article/details/80987392