Если вы поместите данные Intent после super.onBackPressed (), данные намерений не будут переданы onActivityResult в предыдущем действии. Зачем? Насколько я понимаю, все находится в главном потоке, поэтому, даже если super.onBackPressed () вызывается первым, он все равно должен передавать намерение.
Если super.onBackPressed () вызывается после / в конце, это работает.
SettingActivity.java
@Override
public void onBackPressed()
{
Intent i = new Intent();
i.putExtra("test", -999);
setResult(RESULT_OK, i);
super.onBackPressed();
}
When Super.onBackPressed called initially, doesn't work.
SettingActivity.java:
@Override
public void onBackPressed()
{
super.onBackPressed();
Intent i = new Intent();
i.putExtra("test", -999);
setResult(RESULT_OK, i);
//super.onBackPressed(); if called after, it works.
}
MainActivity.java:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == SETTING_REQ_CODE)
Log.d(this.getClass().getSimpleName(), data.getIntExtra("test", 0)));
}
Если super.onBackPressed () вызывается раньше, то в зарегистрированном сообщении будет распечатано значение по умолчанию 0. Если super.onBackPressed () вызывается в конце, данные из намерения будут извлечены и отобразят -999.