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()
方法中,我向bundlebunconAssets
然后将此捆绑添加到intentintConnAssets
中,最后调用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()代码>应该是最后一行。