Android SDK эквивалентен для viewWillAppear (iOS)? - PullRequest
10 голосов
/ 07 декабря 2011

Положение

У меня довольно простое приложение с двумя «макетами» с использованием SharedPreferences.

  • Main.xml
  • Settings.xml

Main имеет textView, который использует getString из SharedPreferences. Также кнопка для открытия настроек.

В настройках есть спиннер и кнопка для сохранения в SharedPreferences.


TextView обновляется, когда приложение загружается, так как я вызываю setText () внутри onCreate (Bundle saveInstanceState)

Задача

Когда я открываю «Настройки» и обновляю SharedPreferences, я использую кнопку «Назад», чтобы вернуться в главное меню.

Поскольку я вызываю setText () внутри onCreate (), textView не обновляется снова, пока я не выйду из приложения и снова не открою приложение для main.

Какой метод мне нужно использовать для обновления textView после возврата из настроек?

Мой запрос похож на viewWillAppear () для iOS.

Ответы [ 4 ]

19 голосов
/ 07 декабря 2011

onCreate () вызывается только один раз при первом запуске операции. Если вы хотите обновить текст всякий раз, когда действие становится активным, вы можете вместо этого использовать onResume (). Более подробную информацию о жизненном цикле деятельности можно найти здесь .

1 голос
/ 07 декабря 2011

Вы также можете создать OnSharedPreferenceChangeListener.Зарегистрируйте его в своем Activity.onCreate() с помощью PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener().Также отмените регистрацию в Activity.onDestroy() с PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferenceChangeListener().

0 голосов
/ 13 апреля 2012

лучшее решение, которое я нашел, это переопределить onVisibilityChanged

@Override
protected void onVisibilityChanged(View changedView, int visibility){
    super.onVisibilityChanged(changedView, visibility);
    if(visibility==VISIBLE ){
        Log.v("View will appear", "");  
    }
    else{
        Log.v("View will disappear", "");   
    }
}
0 голосов
/ 07 декабря 2011

Вы также можете начать действие «Настройки» с помощью startActivityForResult, а затем реализовать метод onActivityResult в своей основной операции: StartingActivities

...