是否必须返回从活动B调用startActivityForResult的活动A?

时间:2017-08-11 04:10:26

标签: android android-intent android-activity start-activity startactivityforresult

我有两个activities我希望他们能够使用相同的数据来回互动,但使用不同的views/layout,我可以执行相同的操作这两项活动。

我被建议使用startActivity而不是startActivityForResult,因为回到调用活动(活动A)是可选的,但我认为不是这样的。

我看了看,但一切都建议我使用startActivityForResult。如果有可能,那么如何不回到调用活动会影响程序?请指教,谢谢。

2 个答案:

答案 0 :(得分:1)

不,不是强制性的。 startActivitystartActivityForResult的使用几乎相同,只是如果您将startActivityForResultonActivityResult一起使用,则可以从活动B(新活动)中获取一些数据。

如果使用sartActivityForResult if,则可以放心地忽略结果  你真的不需要一些数据。

答案 1 :(得分:0)

startActivityForResult()在现有活动的 onActivityResult()方法中需要来自第二个活动结果的更新数据时非常有用。如果您不需要结果,那么您只需使用 startActivity()即可。如果您不希望从第二个活动进行任何更新,只需调用 startactivity(),或者如果您使用 startActivityForResult(),则可以忽略来自第二个活动的意图数据的 onActivityResult()即可。您可以像这样实现 startActivityForResult()

FirstActivity.java

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

SecondActivity.java

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

FirstActivity.java

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

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