【发布时间】:2021-11-23 10:31:36
【问题描述】:
每当我进入设置活动并旋转设备时,都会收到此错误消息“找不到片段构造函数”。 Bellow 是我的设置活动onCreate() 方法和SettingsFragment 类。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences sharedPreferences =
PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
setContentView(R.layout.settings_activity);
if (savedInstanceState == null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings, new SettingsFragment(this))
.commit();
}
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public static class SettingsFragment extends PreferenceFragmentCompat {
WeakReference<SettingsActivity> activityWeakReference;
SettingsFragment(SettingsActivity activity) {
activityWeakReference = new WeakReference<>(activity);
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
ListPreference listPreference = findPreference("jojojojo");
if (listPreference != null) {
listPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
activityWeakReference.get().setResult(1);
return true;
}
});
}
SwitchPreferenceCompat switchPreferenceCompat = findPreference("lalalala");
if (switchPreferenceCompat != null) {
switchPreferenceCompat.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if ((boolean)newValue) {
activityWeakReference.get().mostrarMensaje(getString(R.string.toastFrasesOn));
activityWeakReference.get().setResult(2);
} else {
activityWeakReference.get().setResult(3);
}
return true;
}
});
}
}
}
【问题讨论】:
-
您可以添加您的
SettingsFragment吗?谢谢 -
@akhilnair 完成。
标签: java android fragment settings