Невозможно получить данные о намерениях из вызова onBackPressed () - PullRequest
0 голосов
/ 26 мая 2019

Если вы поместите данные 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...