我有两个活动,分别在不同的应用程序中。Activity1 上有一个按钮,用户可以点击它,在其 onClick()
方法中使用意图调用第二个活动:
Intent myIntent = getPackageManager().getLaunchIntentForPackage(com.myProject.Activity2);
startActivityForResult(myIntent, 600);
这段代码可以在Activity1中正确地启动Activity2,但是onActivityResult
方法会在Activity2的onCreate
方法之前就被调用了,而不是在我设置返回intent的onBackPressed()
方法中。
下面是Activity2的onCreate
方法:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
以下是Activity2中当前版本的onBackPressed
方法:
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("Stuff", someStuff);
if(getParent()==null){
setResult(Activity.RESULT_OK, intent);
}else{
getParent().setResult(Activity.RESULT_OK, intent);
}
finish();
super.onBackPressed();
}
我的AndroidManifest.xml文件中为Activity2设置了以下的意图过滤器:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
我验证了我的
launchMode
是standard
(而不是singleTask
等),如这里建议的那样,并且我的请求代码不是负数,如这里所警告的。我也尝试了android:launchMode="singleTop"
,但也不行。我还尝试按照这里提到的方法,在Activity2中不调用
onBackPressed()
中的finish()
(也只是像这里建议的那样只使用super.onBackPressed()
),然后再像这里建议的那样调用它。此外,我尝试注释掉
intent.putExtra("Stuff", someStuff);
这一行,因为它似乎给这个人带来了麻烦。有什么想法吗?