如何在android中实现设置

时间:2019-07-17 11:55:16

标签: android

我想创建一个设置类。我现在自己创建了一个。例如,我创建了一个名为camera的按键开关。这个Clicklistener该怎么做?

SettingsActivity类:

public class SettingsActivity extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
    }

    public static class MyPreferenceFragment extends PreferenceFragment
    {
        @Override
        public void onCreate(final Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.settings);
        }
    }
}

设置活动XML:                 

        <androidx.preference.PreferenceCategory
            android:key="the_key_to_retrieve_the_preference_in_code">

            <androidx.preference.SwitchPreference
                android:key="camera"
                android:summary="...."
                android:title="Camera" />

            <androidx.preference.SwitchPreference
                android:key="reset"
                android:summary="..."
                android:title="Reset" />

            <androidx.preference.Preference
                android:key="key"
                android:summary="subtitle"
                android:title="title" />

            <androidx.preference.Preference
                android:key="key2"
                android:summary="subtitle2"
                android:title="title2" />

            <androidx.preference.CheckBoxPreference
                android:key="key_for_check_box"
                android:summary="subtitle"
                android:title="title" />

        </androidx.preference.PreferenceCategory>
    </PreferenceScreen>

1 个答案:

答案 0 :(得分:0)

遵循以下步骤  1.在oncreate中,您应该进行默认设置,然后将共享首选项放入

SharedPreferences preferences = 
PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Key","Value");
editor.apply();

在此更改标志,以了解设置是否为默认设置。因此,第一次用户默认打开应用程序的所有内容,并且在他更改某些内容时设置默认值时,默认标志会更改,而下次他回来时,此步骤将忽略 2.在每个切换台上,您都必须检查并从共享首选项中获取价值。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("Key", "Value");
if(!name.equalsIgnoreCase("") && !name.equalsIgnoreCase("default")
{
    // Switcher change state
}

可选:您可以通过添加一个标志来优化它,以检查上次更新后是否有任何更改,在这种情况下,只需更新每个切换台即可,但这是最简单的方法。您可以通过添加null检查来检查用户是否是首次打开应用

结论:检查第一次是否仅将所有带有共享首选项中的默认值的内容置入->更改切换器状态是否仅在共享首选项中进行了更改->回到设置活动时,从共享首选项中提取每个切换器的所有值< / p>