启动 onActivityResult 未从菜单选项调用

Start onActivityResult not being called from menu option

我有一个 Activity AActivity B 问题是我无法使用菜单选项从 B 调用 Activity A 中的 onActivityResult

这就是我从 B

到 Activity A 的方式
@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case android.R.id.home:
        return true;
    case R.id.category_add:
        Intent intent = new Intent(this, ActivityB.class);
        startActivityForResult(intent, 1);
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }

}

现在在 Activity B 中执行一些操作并返回 Activity A,如图所示

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case android.R.id.home:
        return true;
    case R.id.task_add:
        Intent intent = new Intent(this, ActivityA.class);
        startActivity(intent );
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

现在 Activity 没有调用的 Activity 结果:

public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if ((requestCode == 1) && (resultCode == Activity.RESULT_OK)) {
        if (data != null) {
            sampledata= data.getStringExtra("sampletext");
        }
    }
}

这是我的清单文件:

<activity
    android:name="com.sample.example.ActivityA"
    android:label="@string/title_sample_app"
    android:parentActivityName=".MainActivity"
    android:theme="@style/Theme.Default" >
</activity>
<activity
    android:name=".ActivityB"
    android:label="@string/title_activity_login"
    android:theme="@style/Theme.Default" >
</activity>

要return回到ActivityA,你不想重新开始而是要完成ActivityB

case R.id.task_add:
    Intent intent = new Intent();
    intent.putExtras( whatever you need to pass back to A);
    setResult(Activity.RESULT_OK, intent);
    finish();
    break

检查错别字

问题是您从 Activity B.

再次开始 Activity

正确的方法(如果您开始 Activity 结果)是这样完成它:

Intent resultIntent = new Intent();
setResult(RESULT_OK, resultIntent);
finish();

更多信息: