Android 从子活动返回的结果代码不正常

Android 从子活动返回的结果代码不正常,android,onactivityresult,start-activity,Android,Onactivityresult,Start Activity,我有一个活动,它为结果启动一个子活动。启动子活动时,在其finish()方法中,我向bundlebunconAssets 然后将此捆绑添加到intentintConnAssets中,最后调用setResult(RESULT\u OK,intConnAssets) 问题是,在运行时,当我关闭子活动并因此调用其finish()方法时,会调用main活动中的onActivityResult,但不会调用其中的开关盒。但是 else { Log.d(TAG, "resultCode

我有一个活动,它为结果启动一个子活动。启动子活动时,在其
finish()
方法中,我向bundle
bunconAssets

然后将此捆绑添加到intent
intConnAssets
中,最后调用
setResult(RESULT\u OK,intConnAssets)

问题是,在运行时,当我关闭子活动并因此调用其
finish()
方法时,会调用main活动中的
onActivityResult
,但不会调用其中的
开关盒。但是

else {
            Log.d(TAG, "resultCode != RESULT_OK");
        }
调用,这意味着从子活动返回的resutCode不正常

为什么会这样

亚活动性

@Override
public void finish() {
    // TODO Auto-generated method stub
    super.finish();
    Log.w(TAG, "@finish().");

    if (this.mqttSettingsDB != null) {
        Log.d(TAG, "this.mqttSettingsDB is not null.");

        int[] id = this.mqttSettingsDB.getIDs();
        Bundle bunConnAssets = new Bundle();
        Intent intConnAssets = new Intent();
        ....
        ....
        ....
        intConnAssets.putExtras(bunConnAssets);
        setResult(RESULT_OK, intConnAssets);

    } else {
        Log.wtf(TAG, "this.mqttSettingsDB is null.");
    }
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    Log.d(TAG, "onActivityResult");

    switch (requestCode) {
    case REQUEST_CODE:
        if (resultCode == RESULT_OK) {
            if (data != null) {
                if (data.hasExtra("bunConnAssets")) {
                    Log.d(TAG, "Bundle exists");
                } else {
                    Log.d(TAG, "Bundle does not exist");
                }
            }
        } else {
            Log.d(TAG, "resultCode != RESULT_OK");
        }
        break;

    default:
        Log.e(TAG, "Unexpected RequestCode.");
        break;
    }
}
活动结果

@Override
public void finish() {
    // TODO Auto-generated method stub
    super.finish();
    Log.w(TAG, "@finish().");

    if (this.mqttSettingsDB != null) {
        Log.d(TAG, "this.mqttSettingsDB is not null.");

        int[] id = this.mqttSettingsDB.getIDs();
        Bundle bunConnAssets = new Bundle();
        Intent intConnAssets = new Intent();
        ....
        ....
        ....
        intConnAssets.putExtras(bunConnAssets);
        setResult(RESULT_OK, intConnAssets);

    } else {
        Log.wtf(TAG, "this.mqttSettingsDB is null.");
    }
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    Log.d(TAG, "onActivityResult");

    switch (requestCode) {
    case REQUEST_CODE:
        if (resultCode == RESULT_OK) {
            if (data != null) {
                if (data.hasExtra("bunConnAssets")) {
                    Log.d(TAG, "Bundle exists");
                } else {
                    Log.d(TAG, "Bundle does not exist");
                }
            }
        } else {
            Log.d(TAG, "resultCode != RESULT_OK");
        }
        break;

    default:
        Log.e(TAG, "Unexpected RequestCode.");
        break;
    }
}

您正在第一行调用
super.finish()
,因此可能不会执行其余代码


在代码末尾调用super方法。

您正在第一行调用
super.finish()
,因此可能不会执行其余代码


在代码末尾调用super方法。

您正在第一行调用
super.finish()
,因此可能不会执行其余代码


在代码末尾调用super方法。

您正在第一行调用
super.finish()
,因此可能不会执行其余代码

在代码末尾调用super方法。

尝试下面的代码

@Override
public void finish() {

    Log.w(TAG, "@finish().");

    if (this.mqttSettingsDB != null) {
        Log.d(TAG, "this.mqttSettingsDB is not null.");

        int[] id = this.mqttSettingsDB.getIDs();
        Bundle bunConnAssets = new Bundle();
        Intent intConnAssets = new Intent();
        ....
        ....
        ....
        intConnAssets.putExtras(bunConnAssets);
        setResult(RESULT_OK, intConnAssets);

    } else {
        Log.wtf(TAG, "this.mqttSettingsDB is null.");
    }
    super.finish();
}
试试下面的代码

@Override
public void finish() {

    Log.w(TAG, "@finish().");

    if (this.mqttSettingsDB != null) {
        Log.d(TAG, "this.mqttSettingsDB is not null.");

        int[] id = this.mqttSettingsDB.getIDs();
        Bundle bunConnAssets = new Bundle();
        Intent intConnAssets = new Intent();
        ....
        ....
        ....
        intConnAssets.putExtras(bunConnAssets);
        setResult(RESULT_OK, intConnAssets);

    } else {
        Log.wtf(TAG, "this.mqttSettingsDB is null.");
    }
    super.finish();
}
试试下面的代码

@Override
public void finish() {

    Log.w(TAG, "@finish().");

    if (this.mqttSettingsDB != null) {
        Log.d(TAG, "this.mqttSettingsDB is not null.");

        int[] id = this.mqttSettingsDB.getIDs();
        Bundle bunConnAssets = new Bundle();
        Intent intConnAssets = new Intent();
        ....
        ....
        ....
        intConnAssets.putExtras(bunConnAssets);
        setResult(RESULT_OK, intConnAssets);

    } else {
        Log.wtf(TAG, "this.mqttSettingsDB is null.");
    }
    super.finish();
}
试试下面的代码

@Override
public void finish() {

    Log.w(TAG, "@finish().");

    if (this.mqttSettingsDB != null) {
        Log.d(TAG, "this.mqttSettingsDB is not null.");

        int[] id = this.mqttSettingsDB.getIDs();
        Bundle bunConnAssets = new Bundle();
        Intent intConnAssets = new Intent();
        ....
        ....
        ....
        intConnAssets.putExtras(bunConnAssets);
        setResult(RESULT_OK, intConnAssets);

    } else {
        Log.wtf(TAG, "this.mqttSettingsDB is null.");
    }
    super.finish();
}

据我所知,
super.finish()应该是最后一行。据我理解,
super.finish()应该是最后一行。据我理解,
super.finish()应该是最后一行。据我理解,
super.finish()应该是最后一行。