Правильное и чистое использование onNewIntent () с setIntent () - PullRequest
0 голосов
/ 27 мая 2020

У меня есть 3 действия (A, B, C), 2 из которых связаны с намерениями. Вот порядок звонков: A -> B -> C. В действии B я использую intent.putExtra("key", gameMode), чтобы начать действие C. При первом запуске активности C проблем нет. Но если C заканчивается, а я go возвращаюсь к B и изменяю game_mode, действие C всегда считывает самое первое намерение. Я знаю, что этот вопрос будет задаваться много раз, но даже если я попробую с onNewIntent()setIntent(intent) внутри) или даже с FLAG_ACTIVITY_CLEAR_TOP, это ничего не изменит ... Я думаю (я конечно ...) Я все делаю не так, но прошу вашей помощи для полного и ясного ответа. Цель состоит в том, чтобы обновить намерение (или, по крайней мере, его дополнения). Стоит ли вызывать метод onNewIntent () или Android делает это самостоятельно? et c

Огромное спасибо людям, которые нашли время ответить на мой вопрос.

B-активность:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MenuPrincipal.this, GameCard.class);
        intent.putExtra("key", gameMode);
        onNewIntent(intent);
        startActivity(intent);
    }
});

C activity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.some_layout);
    int gameMode;
    Bundle extras = getIntent().getExtras();
    if(extras != null) {
        gameMode = extras.getInt("key", 0);
    }
}

@Override
public void onBackPressed() {
    // do nothing.
    //default value : super.onBackPressed();
}

1 Ответ

0 голосов
/ 28 мая 2020

Спасибо Ajay KS , которому удалось найти ответ: с помощью extras.getInt («ключ») приложение работает отлично (вы можете прочитать последнее - а не только первое - намерение без любая проблема). Кроме того, после тестирования нет необходимости самостоятельно вызывать метод onNewIntent (intent) для обновления намерения. Похоже, что Android делает это сам. Еще раз большое спасибо!

...