Intent的数据传递类型分为两类:
1.第一种的向下一个activity传递数据
(1)调用Intent的构造方法传activity名:
Intent intent = new Intent(MainActivity.this, Thirdctivity.class);
intent.putExtra("name", "zhansan");
startActivity(intent);
or用构造方法传入自定义的action配置:
假设我的下一个activity的名为com.example.newintent.Thirdctivity ;
Intent intent = new Intent("com.example.newintent.ACTION_START");
intent.addCategory("com.example.newintent.MY_CATEGORY");
startActivity(intent);
要在AndroidManifest.xml中注册category.DEFAULT和START_NEXT
注意:action只能注册一个,category可以注册多个,其中一个category的android.intent.category.DEFAULT的自带有的
<activity
android:name="com.example.newintent.Thirdctivity"
android:label="@string/title_activity_thirdctivity"
>
<intent-filter>
<action android:name="com.example.newintent.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="com.example.newintent.MY_CATEGORY"/>
</intent-filter>
</activity>
2.第二种的下一个activity向上一个activity传递数据
(1)在第一个activitiy调用构造函数Intent()
Intent intent = new Intent(MainActivity.this,Thirdctivity.class);
startActivityForResult(intent, 1);
在第二个activity中调用
Intent intent = new Intent();
intent.putExtra("data", "冲冲冲");
setResult(RESULT_OK,intent);
finish();
再返回第一个activity上重写
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case 1:
if (resultCode==RESULT_OK) {
String returnedData = data.getStringExtra("Holle");
Log.d("TAG", returnedData);//可以调用其他方法来使用回调的数据
}
break;
default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
假如回调的时候是使用Back键回调就在第二个activity里重写onBackPressed()
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("data", "hello");
setResult(RESULT_OK,intent);
finish();
super.onBackPressed();
}