onResume никогда не вызывался при нажатии аппаратной кнопки возврата телефона на android? - PullRequest
0 голосов
/ 05 мая 2020
• 1000 это на аппаратной кнопке возврата, он никогда не вызывался, я обнаружил, что система вызывает onPostResume () вместо onResume (), поэтому попробуйте использовать его, но изменения никогда не применялись

this это SettingsActivity, который я использую

Этот код работает, когда нажата кнопка возврата ActionBar

      @Override
          protected void onResume() {
              super.onResume();
              dataFromSharedPrefrence = getSettingsSharedPreferences();
              adapterExample.notifyDataSetChanged();

          }

Система вызывает onPostResume () при нажатии аппаратной кнопки возврата, но изменения никогда не применялся

@Override
        protected void onPostResume() {
              super.onPostResume();
              dataFromSharedPrefrence = getSettingsSharedPreferences();
              adapterExample.notifyDataSetChanged();
}

Это SettingsActivity

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);
        }
    }

Я обнаружил эту разницу, когда переопределил методы жизненного цикла

  1. При нажатии кнопки ActionBar это вывод
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

1 Ответ

0 голосов
/ 05 мая 2020

Попробуйте следующее:

Вместо использования onResume() попробуйте onStart():

  @Override
      protected void onStart() {
          super.onStart();
          dataFromSharedPrefrence = getSettingsSharedPreferences();
          adapterExample.notifyDataSetChanged();

      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...