启动 onActivityResult 未从菜单选项调用
Start onActivityResult not being called from menu option
我有一个 Activity A 和 Activity 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();
更多信息:
- 要了解有关开始活动(结果)的更多信息,请阅读:Starting Activities and Getting Results
- 要了解有关从其他应用程序获取结果的更多信息(也可能很有趣),请阅读:Interacting with Other Apps - Getting a Result from an Activity
我有一个 Activity A 和 Activity 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();
更多信息:
- 要了解有关开始活动(结果)的更多信息,请阅读:Starting Activities and Getting Results
- 要了解有关从其他应用程序获取结果的更多信息(也可能很有趣),请阅读:Interacting with Other Apps - Getting a Result from an Activity