Android SDK与viewWillAppear(iOS)相当吗?

时间:2011-12-07 18:53:18

标签: android textview sharedpreferences oncreate viewwillappear

情况

我有一个相当简单的应用程序,使用SharedPreferences有两个“布局”。

  • Main.xml
  • 将Settings.xml

Main有一个textView,它使用来自SharedPreferences的getString。还有一个用于打开设置的按钮。

设置有一个微调器和一个保存到SharedPreferences的按钮。


当我在onCreate(Bundle savedInstanceState)中调用setText()时,当应用程序加载时,textView会更新

问题

当我打开“设置”并更新SharedPreferences时,我使用“后退”按钮返回主页。

由于我在onCreate()中调用setText(),因此在退出应用程序并再次将应用程序打开到main之前,textView不会再次更新。

从“设置”返回后,我需要使用哪种方法来更新textView?

我的请求类似于iOS的viewWillAppear()。

4 个答案:

答案 0 :(得分:19)

onCreate()仅在活动首次启动时调用一次。如果要在活动变为活动状态时更新文本,则可以使用onResume()。可以在here找到有关活动生命周期的更多信息。

答案 1 :(得分:1)

您还可以创建OnSharedPreferenceChangeListener。使用Activity.onCreate()PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener()注册。同时在Activity.onDestroy()中使用PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferenceChangeListener()取消注册。

答案 2 :(得分:0)

您还可以使用startActivityForResult启动“设置”活动,然后在主要活动中实施onActivityResult方法:StartingActivities

答案 3 :(得分:-3)

我找到的最佳解决方案是覆盖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", "");   
    }
}