我想使用我创建的设置首选项来设置我的应用主题。 这是我的代码。 告诉我如何在此之后编码。 主Activity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if(id == R.id.settings){
Intent intent = new Intent(this,SettingsActivity.class);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
}
SettingsActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
if (findViewById(R.id.idFrameLayout) != null){
if (savedInstanceState != null) {
return;
}
getFragmentManager().beginTransaction().add(R.id.idFrameLayout, new SettingsFragment()).commit();
}
}
}
SettingsFragment.java
addPreferencesFromResource(R.xml.preferences);
首选项.xml
<PreferenceCategory android:title="General">
<ListPreference
android:defaultValue="System Default"
android:dialogTitle="Select Theme"
android:entries="@array/pref_theme_cat_entries"
android:entryValues="@array/pref_theme_cat_values"
android:key="key_theme"
android:summary="%s"
android:title="Theme" />
</PreferenceCategory>
strings.xml
<string-array name="pref_theme_cat_values">
<item>System Default</item>
<item>Dark</item>
<item>Light</item>
</string-array>
<string-array name="pref_theme_cat_entries">
<item>System Default</item>
<item>Dark</item>
<item>Light</item>
</string-array>
menu.xml
<item android:id="@+id/settings"
android:title="Settings"/>
在activity_settings.xml中
<FrameLayout
android:id="@+id/idFrameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
以下是输出图像
首选项.xml