Android:setResult没有将结果返回到Parent Activity

JCo*_*der 5 android android-intent android-activity onactivityresult startactivityforresult

我使用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);
Run Code Online (Sandbox Code Playgroud)

这是我从我的孩子活动设置结果的方式.

 @Override
    public void onBackPressed() {
        super.onBackPressed();
     Intent resultInt = new Intent();
     resultInt.putExtra("Result", "Done");
     setResult(Activity.RESULT_OK, resultInt);
     finish();
}
Run Code Online (Sandbox Code Playgroud)

这是我的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();
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

这里我检查resultCode == Activity.RESULT_OK的时间是假的.我还检查了在if 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>
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题.

Rav*_*rya 8

修改你的onBackPressed()方法

@Override
public void onBackPressed() {

 Intent resultInt = new Intent();
 resultInt.putExtra("Result", "Done");
 setResult(Activity.RESULT_OK, resultInt);
 super.onBackPressed();
} 
Run Code Online (Sandbox Code Playgroud)

原因:在将结果发送到父活动之前执行Backpress操作他的任务......