Как очистить данные от активности с помощью кнопки возврата устройства
Я создал приложение для Android, у которого есть 3 действия (A,B,C), в действии A есть 2 автозаполнения textview
который выбирает данные из базы данных и кнопки после выбора данных в автозаполнении текста, пользователь нажимает кнопку, и он переходит к следующему действию, которое показывает listview
,
Теперь проблема в том, когда я нажимаю кнопку возврата устройства из listview
является отображением активности A с выбранными данными в автотексте, как я могу избежать выбранных данных, когда нажимаю кнопку возврата устройства.
Спасибо за помощь заранее
5 ответов
protected void onResume(){
super.onResume();
setContentView(R.layout.activity_main);
}
это тоже хорошо работает..
Когда вы нажмете кнопку "Назад", действие "возобновится". Итак, в вашем Activity A переопределите "onResume"... в методе onResume очистите ваши поля.
Вы должны реализовать startActivityforResut. Когда вы вернетесь к этому действию, вы сможете очистить данные.
Нет ничего с кнопкой возврата списка активности, поскольку вы пытаетесь очистить свое поле в предыдущем упражнении. Поскольку вы не завершаете предыдущее действие при создании списка действий, предыдущее действие не меняется. Поэтому, когда вы возвращаетесь из списка, вы говорите те же данные, что и раньше. чтобы сделать это, как предложил @Dave, вы могли бы выполнить очистку в методе oResume или в методе onPause. Но есть проблема. Если вы удалите свои данные в onResume или в onPause, ваши данные будут очищены по другим причинам, связанным с приостановкой или возобновлением, например, нажатием home, или для других приложений и т. Д. Таким образом, вы можете сделать любое из двух
Опция 1:
очистить данные предыдущего действия при запуске действия списка
или же
Вариант 2:
вместо startActivity
вызов startActiviyForResult
а также переопределить onActiviyResult
метод. Таким образом, там вы можете определить, когда вы возвращаетесь из списка действий. Затем очистите данные.
Чтобы справиться с этой проблемой, я просто переопределил бы метод onBackPressed(), и там я бы очистил стек действий, так как нет логического объяснения для сохранения действий в памяти, а затем начал бы новое намерение для вашего исходного действия. Вот код.
@Override
public void onBackPressed() {
Intent intent = new Intent(this, Activity_A.class); //I suppose they are in same package
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
Я надеюсь, что это помогает.