我有活动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>
答案 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
检查拼写错误