Лучший способ получить результат от действия, не заканчивая выдачу результата, и снова показать данные для редактирования? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть два действия: Действие A и Действие B. Когда я нажимаю кнопку в действии A, действие B вызывается для Результата, затем некоторые данные вводятся в текст редактирования действия B, и этот текст отправляется как результат в Занятие A. Затем по активности Результат отображается в TextView.Теперь я снова хочу отредактировать текст в упражнении B.

Есть ли способ не завершать или воссоздавать упражнение B, поэтому данные останутся там, когда я вернусь к занятию B.

, еслинужно я тоже выложу свой код.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Из Android Developer документация

FLAG_ACTIVITY_REORDER_TO_FRONT

public static final int FLAG_ACTIVITY_REORDER_TO_FRONT

Если установлено в намерении, переданном Context.startActivity ()этот флаг приведет к тому, что запущенное действие будет перенесено в начало стека истории его задачи, если оно уже выполняется.

Например, рассмотрим задачу, состоящую из четырех действий: A, B, C, D.Если D вызывает startActivity () с намерением, которое разрешается к компоненту действия B, то B будет перенесен в начало стека истории с таким результирующим порядком: A, C, D, B. Этот флаг будет игнорироваться, еслиТакже указывается FLAG_ACTIVITY_CLEAR_TOP.

В вашем случае вы можете переключаться между ActivityA и ActivityB, не заканчивая и не воссоздавая их.

Соберите все вместе.

ActivityA

// Call this method when users press a button on ActivityA to go to ActivityB.
public void goToActivityB(View view) {
    Intent intent = new Intent(this, ActivityB.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    startActivity(intent);
}

// When users press a button from ActivityB, ActivityA will be bring to front and this method will be called by Android.
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    String data = intent.getStringExtra("data");
    // Update your text view here
    yourTextView.setText(data);
}

ActivityB

// Call this method when users press on a button in ActivityB to pass data back to ActivityA.
public void backToActivityA(View view) {
    Intent intent = new Intent(this, ActivityA.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    // Send text that users enter into your edit text back to ActivityA
    intent.putExtra("data", yourEditText.getText().toString());
    startActivity(intent);
}
0 голосов
/ 22 февраля 2019
  • Если вы вернетесь в ActivityA, ActivityB, очевидно, будет уничтожен.Вам необходимо снова передать эти данные в ActivityB с помощью intent.putExtra(your_key, your_value);

  • Еще одно решение проблемы заключается в сохранении данных в классе SingleTon.

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