如何从应用程序中添加的设置首选项设置应用程序主题

时间:2021-05-12 09:57:39

标签: java android

我想使用我创建的设置首选项来设置我的应用主题。 这是我的代码。 告诉我如何在此之后编码。 主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

enter image description here

1 个答案:

答案 0 :(得分:0)

您可能需要查看 thisthis 教程