#android
#Android
Вопрос:
В моей основной деятельности onCreate я устанавливаю TextView на текущую дату. Из этого действия я запускаю activityforresult activity2, где я могу изменить дату. В activityresult я устанавливаю TextView на любую возвращенную дату.
Теперь, если вы закроете основное действие, а TextView не будет текущей датой. При следующем открытии (с помощью кнопки на главном экране или панели приложений) я бы хотел, чтобы в TextView была установлена текущая дата.
После того, как оно откроется в первый раз, при следующем открытии вы не нажмете onCreate. Я пытался использовать onResume, однако это не позволяет activity2 onActivityResult изменять дату.
Комментарии:
1. ваш вопрос неясен, пожалуйста, уточните немного подробнее
2. Не могли бы вы, пожалуйста, предоставить фрагменты кода, чтобы мы могли точно видеть, где вы хотите что вызвать? Кроме того, есть ли у вас полное представление о жизненном цикле Android?
Ответ №1:
Как насчет чего-то подобного:
Прежде всего, создайте onSaveInstanceState(Bundle)
метод и сохраните в нем текущее содержимое даты TextView
. Это вызывается перед тем, как Android остановит, скроет или уничтожит вашу активность.
При запуске activity2 будет вызван ваш onStop()
из activity1. Там установите флаг, указывающий, вызывается ли onStop()
из-за того, что вы запускаете новое действие (сделайте intent для activity2 членом, а не локальной переменной для этого). Убедитесь, что вы сохранили этот флаг в onSaveInstanceState
activity1.
Реализуйте onRestoreInstanceState(Bundle)
в activity1 и восстановите в локальных переменных значения даты и флага.
Наконец, в onResume
activity1 установите флажок — если вы возобновляете работу, потому что возвращаетесь из activity2, не меняйте TextView, поскольку он будет установлен в onActivityResult
, в противном случае вы можете безопасно восстановить сохраненное значение даты.
Ответ №2:
Попробуйте сохранить значение даты из activity2 в Android SharedPreferences.
Вы можете установить дату в соответствии с предпочтениями, используя что-то вроде этого:
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString(MY_NAME, "Sai");
prefsEditor.putString(MY_WALLPAPER, "f664.PNG");
prefsEditor.commit();
и вы можете прочитать настройки, используя что-то вроде этого:
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
String prefName = myPrefs.getString(MY_NAME, "nothing");
String wallPaper = myPrefs.getString(MY_WALLPAPER, null);
Установите флаг типа «dateWasAlreadySet» в SharedPreferences, если дата была установлена из activty2, чтобы вы знали, что дата уже установлена.
Псевдокод:
If(SharedPreferences.dateWasAlreadySet){
activity1.textField.text = SharedPreferences.get("myDate");
} else {
activity1.textField.text = currentDate;
}
Надеюсь, вы понимаете, что я имею в виду.