我想创建一个设置类。我现在自己创建了一个。例如,我创建了一个名为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>
答案 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>