【发布时间】:2016-05-04 19:12:14
【问题描述】:
我已经使用 startActivityForResult 从父活动开始了一个子活动。在子活动中执行所需功能后,我正在使用 setResult 设置结果。但是我没有从子活动中获得父活动的结果。
这是我的代码。
这是我如何从父活动中调用我的子活动。
Intent i = new Intent(MainActivity.this, Child.class);
i.putExtra("ID", intID);
i.putExtra("aID", aID);
i.putExtra("myMsg", myMsg);
startActivityForResult(i, 1);
这就是我设置子活动结果的方式。
@Override
public void onBackPressed() {
super.onBackPressed();
Intent resultInt = new Intent();
resultInt.putExtra("Result", "Done");
setResult(Activity.RESULT_OK, resultInt);
finish();
}
这是我的onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if (resultCode == Activity.RESULT_OK) {
if(data!=null) {
Toast.makeText(MainActivity.this, "Data received", Toast.LENGTH_SHORT).show();
}
}
}
}
当我检查 resultCode==Activity.RESULT_OK 时,结果为假。 而且我还检查了在这个 if 条件之外传递的意图及其返回 null。
<activity
android:name=".MainActivity"
android:label="Main"
android:parentActivityName=".MainPage"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.mydomain.mydomain.MainPage" />
</activity>
<activity
android:name=".Child"
android:label="Child"
android:parentActivityName=".MainActivity"
android:theme="@style/AppTheme1">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.mydomain.mydomain.MainActivity" />
</activity>
谁能帮我解决这个问题。
【问题讨论】:
-
@prashantpatil 我正在尝试将结果设置为子活动的父活动。但其结果并未发送到父活动。我在家长活动中没有得到任何结果。这就是问题所在。 setResult 不是设置结果。
-
把你的 super.onbackpress() 放在 setresult 方法下面就可以了兄弟
-
是的……它成功了……!!!谢谢@Ravind ..请将您的解决方案作为答案发布...您能告诉我为什么 super.onbackpress() 必须在下面吗?
标签: android android-intent android-activity onactivityresult startactivityforresult