启动onActivityResult未从菜单选项中调用

时间:2015-06-11 07:43:44

标签: android menu onactivityresult

我有活动A 活动B ,问题是我无法使用菜单从B调用活动A中的onActivityResult选项。

现在这就是我从B

进入活动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);
    }

}

现在在活动B中我执行一些操作并返回活动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);
    }
}

现在在活动A onActivityResult中没有调用:

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>

2 个答案:

答案 0 :(得分:4)

问题是您是否从活动B再次启动活动。

正确的方法(如果您为结果启动了一个Activity)就是这样完成它:

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

更多信息:

答案 1 :(得分:2)

要返回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

检查拼写错误