所以我試圖在我的 android 應用程式中創建一個選項選單,但是當我在模擬器中單擊它時,應用程式崩潰并且我收到以下錯誤:
androidx.preference.SwitchPreferenceCompat cannot be cast to androidx.preference.PreferenceGroup
我真的不知道我在這里做錯了什么,我希望有人知道。
設定活動:
public class SettingsActivity extends AppCompatActivity {
public static final String KEY_PREF_EXAMPLE_SWITCH = "example_switch";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportFragmentManager().beginTransaction()
.replace(android.R.id.content,
new SettingsFragment()).commit();
}
}
片段類
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState,
String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
}
}
我的 MainActivity 中的方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
// Launch SettingsActivity
if (id == R.id.action_settings) {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
編輯這也是我的布局檔案:
<?xml version="1.0" encoding="utf-8"?>
<SwitchPreferenceCompat xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:defaultValue="false"
android:key="vega_preference"
android:summaryOff="@string/vega_off_string"
android:summaryOn="@string/vega_on_string"
android:title="@string/vega_switch_title" />
<SwitchPreference
android:defaultValue="false"
android:key="vegan_preference"
android:summaryOff="@string/vegan_off_string"
android:summaryOn="@string/vegan_on_string"
android:title="@string/vegan_switch_title" />
</SwitchPreferenceCompat>
uj5u.com熱心網友回復:
androidx.preference.SwitchPreferenceCompat cannot be cast to androidx.preference.PreferenceGroup
該片段setPreferencesFromResource(R.xml.preferences, rootKey)是引發它的原因,因為它期望一個PreferenceGroup而不是偏好視圖。哪里SwitchPreferenceCompat沒有PreferenceGroup。
那是因為您使用 aSwitchPreferenceCompat作為設定螢屏的根元素。相反,您需要使用PreferenceScreenwhich extends from PreferenceGroup。
所以要解決這個問題,你需要確保你的偏好布局的根元素是PreferenceScreen
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/445235.html
