Intent回调

我们都知道在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,所以这里去掉了。

猜你喜欢

转载自blog.csdn.net/qq_26460841/article/details/113458453
今日推荐