#java #android #android-fragments #androidx #android-preferences
#java #Android #android-фрагменты #androidx #android-настройки
Вопрос:
Я не совсем понимаю это. Я установил точку останова в коде библиотеки для onCreate(@Nullable Bundle savedInstanceState)
метода библиотеки, и это похоже на то, что он не вызывается.
Мой фрагмент кода очень прост
public class MySettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
}
}
И моя активность тоже не такая большая
public class PreferencesActivity extends AppCompatActivity
{
MySettingsFragment frag;
@SuppressWarnings("unused")
@Override
public void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
frag = new MySettingsFragment();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings_container, frag)
.commit();
// frag has null mPreferenceManager here
// so some stuff I call from it will crash
}
// ...
}
Я могу видеть и загружать свои настройки в приложении, но я хотел получить там фрагмент и прочитать что-то вроде frag.getPreferenceScreen();
или frag.findPreference(PREFERENCE_UID)
, но у фрагмента есть null
mPreferenceManager, поэтому большинство вещей терпят неудачу.
Мне нужно прочитать это, так как я синхронизирую некоторые настройки из своего приложения с собственными частями, и большинство руководств по настройкам слишком просты. Есть идеи, почему mPreferenceManager имеет значение null в моем фрагменте во время действия onCreate?
Ответ №1:
Я обнаружил, что значение mPreferenceManager не равно нулю в собственном методе onCreate фрагмента, поэтому я перенес туда то, что хотел запустить в методе onCreate действия.