Intent:从一个Activity到另一个Activity

来源:互联网 发布:广州php招聘 编辑:程序博客网 时间:2024/05/01 14:39

Intent就像信使一样,穿梭于Activity之间,有两种方式:显示Intent和隐式Intent。

显示Intent

Intent intent = new Intent(MainActivity.this, Main2Activity.class);startActivity(intent);

隐式Intent

Intent intent = new Intent("随便什么字符串");startActivity(intent);

隐式就隐式在AndroidManifest.xml

<activity android:name=".Main2Activity">    <action android:name="随便什么字符串" />    <category android:name="android.intent.category.DEFAULT" /></activity>

同时匹配action和category,才能响应该Intent。每个Intent只能有一个action,但可以指定多个category

Intent intent = new Intent("随便什么字符串");intend.addCategory("随便什么字符串2");startActivity(intent);

AndroidManifest.xml

<activity android:name=".Main2Activity">    <action android:name="随便什么字符串" />    <category android:name="android.intent.category.DEFAULT" />    <category android:name="随便什么字符串2" /></activity>

隐式Intent之系统内置action

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

这样就可以打开拨号界面。我们的Activity也可以响应这个Action

<activity android:name=".Main2Activity">    <action android:name="android.intent.action.DIAL" />    <category android:name="android.intent.category.DEFAULT" />    <data android:scheme="tel" /></activity>

向下一个Activity传递数据

MainActivity.java

Intent intent = new Intent(MainActivity.this, Main2Activity.class);intent.putExtra("extra_data", "weiheli");startActivity(intent);

Main2Activity.java

Intent intent = getIntent();String data = intent.getStringExtra("extra_data");Log.d(data);

返回数据给上一个Activity

MainActivity.java

Intent intent = new Intent(MainActivity.this, Main2Activity.class);startActivityForResult(intent, 1);

还需要重写onActivityResult()

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    switch(requestCode) {        case 1:            if (resultCode == RESULT_OK) {                String returnData = data.getStringExtra("data_return");                Log.d("MainActivity", returnData);        }    }}

Main2Activity.java

Intent intent = new Intent();intent.putExtra("data_return", "weiheli");setResult(RESULT_OK, intent);finish();
0 0
原创粉丝点击