[英]onResume never been called when click the phone hardware back button on android?
我正面臨這個問題,我有 MainActivity 和 SettingsPreference,所以當我從設置返回到 MainActivity 時我想在 MainActivity 上重新加載適配器我使用了 onResume() 當我點擊 ActionBar 后退按鈕時它工作得很好,但是當我在硬件上嘗試它時后退按鈕它從未被調用過,我發現系統調用 onPostResume() 而不是 onResume() 所以嘗試使用它,但從未應用更改
當按下 ActionBar 后退按鈕時,此代碼有效
@Override
protected void onResume() {
super.onResume();
dataFromSharedPrefrence = getSettingsSharedPreferences();
adapterExample.notifyDataSetChanged();
}
當硬件后退按鈕被按下但更改從未應用時,系統調用 onPostResume()
@Override
protected void onPostResume() {
super.onPostResume();
dataFromSharedPrefrence = getSettingsSharedPreferences();
adapterExample.notifyDataSetChanged();
}
這是設置活動
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings, new SettingsFragment())
.commit();
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public static class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
}
}
當我覆蓋生命周期方法時,我發現了這種差異
2020-05-05 06:00:44.899 23467-23467/com.example.test E/MainActivity: onDestroy
2020-05-05 06:00:44.907 23467-23467/com.example.test E/MainActivity: onDetachedFromWindow
2020-05-05 06:00:44.964 23467-23467/com.example.test E/MainActivity: onCreateView
2020-05-05 06:00:44.990 23467-23467/com.example.test E/MainActivity: onCreateView
2020-05-05 06:00:45.009 23467-23467/com.example.test E/MainActivity: onCreateView
2020-05-05 06:00:45.015 23467-23467/com.example.test E/MainActivity: onCreateView
2020-05-05 06:00:45.037 23467-23467/com.example.test E/MainActivity: onContentChanged
2020-05-05 06:00:45.048 23467-23467/com.example.test E/MainActivity: onStart
2020-05-05 06:00:45.051 23467-23467/com.example.test E/MainActivity: onPostCreate
2020-05-05 06:00:45.053 23467-23467/com.example.test E/MainActivity: onResume
2020-05-05 06:00:45.056 23467-23467/com.example.test E/MainActivity: onPostResume
2020-05-05 06:00:45.078 23467-23467/com.example.test E/MainActivity: onAttachedToWindow
2020-05-05 06:00:45.141 23467-23467/com.example.test E/MainActivity: onCreateView
2020-05-05 06:00:45.188 23467-23467/com.example.test E/MainActivity: onCreateView
2020-05-05 06:00:45.223 23467-23467/com.example.test E/MainActivity: onCreateView
2020-05-05 06:01:21.732 23467-23467/com.example.test E/MainActivity: onRestart
2020-05-05 06:01:21.734 23467-23467/com.example.test E/MainActivity: onStart
2020-05-05 06:01:21.738 23467-23467/com.example.test E/MainActivity: onResume
2020-05-05 06:01:21.739 23467-23467/com.example.test E/MainActivity: onPostResume
試試這個:
不要使用onResume()
嘗試onStart()
:
@Override
protected void onStart() {
super.onStart();
dataFromSharedPrefrence = getSettingsSharedPreferences();
adapterExample.notifyDataSetChanged();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.