我们都知道在Intent
中可以传递字符串、对象等,那么其实还可以返回数据到上一个活动中。而这个返回是只需要按Back
键就可以。
在启动第二个Activity
时,使用的就不是startActivity
,而是startActivityForResult
这个方法。在第二个页面中使用setResult(xxx, intent)
就可以向上返回一个放置了结果内容的字符串的intent
,然后在第一个Activity
中的onActivityResult
中就可以通过相关的get
方法得到。
在第一个Activity
中使用:
Intent intent = new Intent("com.example.myapplication.Main2Activity.Test"); // 隐式Intent
startActivityForResult(intent, 0); // 0是自己定的requestCode
然后对第二个指定Intent-fliter
:
<intent-filter>
<action android:name="com.example.myapplication.Main2Activity.Test"></action>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
然后再第一个Activity
中进行数据Intent
对象的返回:
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("KEY", "TEST!");
setResult(0, intent); // 0 是resultCode
finish();
}
}
测试发现,在onBackPressed
中,如果使用了super.xxx
会使程序报错,传入的Intent
对象是null
,所以这里去掉了。