使用Intent正确地从SecondActivity返回到MainActivity

时间:2018-02-25 17:03:22

标签: android android-intent

我有一个有两个活动的应用程序。一个是MainActivity,我将Intent称为SecondActivity。然后,在第二个屏幕上我创建了一个Object,我想返回MainActivity。我从IntentSecondActivity创建MainActivity并将此对象放在那里。问题是我应该在Intent代码中的哪个位置MainActivity?我尝试实施onResume()方法只是为了看看会发生什么,但在这种情况下,它会在返回主屏幕时运行onCreate()onResume()方法。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

从MainActivity中使用startActivityForResult()方法调用SecondActivity

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

在SecondActivity中设置要返回MainActivity的数据

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);//Data you want to send back
setResult(Activity.RESULT_OK,returnIntent);
finish();

现在,在MainActivity类中,为onActivityResult()方法编写以下代码。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            //Write your code if there's no result
        }
    }
}//onActivityResult

有关onActivityResult的更多信息,请查看link;

答案 1 :(得分:0)

1)有两种方式,首先是你的方式。 在这种情况下,您可以在Android的任何生命周期中收到IntentonCreateonStartonResume,具体取决于您的应用的要求。在正常情况下,我们会在getIntent().getExtras()中使用onCreate

2)但是对于这种情况,我建议您使用startActivityForResult()而不是startActivity(),因为在这种情况下,您不必在创建MainActivity时完成SecondActivity {1}},只需在完成SecondActivity之前返回您的意图。另请注意,无需再次创建MainActivity,而是在回拨Intent中获取onActivityResult个数据。