Android 为什么startActivityForResult的结果出现在活动真正开始之前?
我有以下代码来启动活动:Android 为什么startActivityForResult的结果出现在活动真正开始之前?,android,android-activity,Android,Android Activity,我有以下代码来启动活动: public boolean onOptionsItemSelected(final MenuItem item) { super.onOptionsItemSelected(item); switch (item.getItemId()) { case MENU_PREFS: startActivityForResult(new Intent(this, PreferencesActivity.class),1);
public boolean onOptionsItemSelected(final MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case MENU_PREFS:
startActivityForResult(new Intent(this, PreferencesActivity.class),1);
break;
case MENU_ABOUT:
startActivityForResult(new Intent(this, AboutActivity.class),2);
break;
}
return false;
}
以及以下内容以获取结果:
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data){
switch (requestCode){
case 1:
case 2:
if (resultCode==RESULT_CANCELED)
finish();
}
但onActivityResult在活动(用于结果)开始之前触发。这很奇怪。首先,它使用相应的请求代码(在我的例子中是1或2)重新运行resultCode=0的结果,这样我的主要活动就完成了。在相应的活动(结果)真正开始之后。这是安卓系统的一个已知问题或特性。请参阅涵盖类似问题的线程活动开始时的代码是什么样子的?被调用活动中确定何时执行SetResult(Result.OK,1)以返回到原始调用方的标准是什么?在调用Finish()或执行SetResult指令之前,被调用的活动不会返回 我有工作正常的代码
if (buttonSignOn.Text == "Proceed")
{
mAppFeatureMenuRetCD = "99";
Intent ProcessAppFeatureMenu = new Intent();
ProcessAppFeatureMenu.SetClass(this, typeof(AppFeatureMenu));
ProcessAppFeatureMenu.PutExtra("CallingActName", "BPM_Activity1");
ProcessAppFeatureMenu.PutExtra("AppFeatMenuStatusCode", "01");
ProcessAppFeatureMenu.PutExtra("AppFeatMenuRetCd", "00");
StartActivityForResult(ProcessAppFeatureMenu, Process_AppFeature_Menu);
return;
}
public string ReturnToCallingActivity(Intent x, string y, string z)
{
x.PutExtra("CredStatCode", strBPMCredStatCode);
x.PutExtra("RetActName", "ProgramSignOnStatus");
x.PutExtra("MiscStuff", strCallingActMiscStuff);
switch (y)
{
case "01":
SetResult(Result.Ok, x);
break;
case "02":
SetResult(Result.Canceled,x);
break;
default:
SetResult(Result.FirstUser, x);
break;
}
//Finish();
return conOK;
}