1
我已经通过了至少六个教程,至少现在不能得到一个简单的设置菜单为我的应用程序工作。Android应用程序设置菜单,无法使其工作
什么工作
- 设置在活动菜单
- 设置活动开启(偏好活动) 为“暗背景”
- 设置片段显示出来,使用复选框
- 我可以点击取消选中该复选框并将其记住
**什么不工作**
- 我不能让该复选框,在我的主要活动,尽快基础上,改变值
- 我不能有值的变化,因为它被点击和更新我的布局值
基本上,我有一个选项的设置菜单。 “黑暗的背景?”这是真的还是假的。我希望一旦它被设置为true(选中),我的主要活动(和设置活动)的背景都会变为不同的颜色(目前无所谓颜色)。
这里是我的代码,也请注意评论...
SettingsActivity.java
...
public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener{
public static final String KEY_BACKGROUND_COLOR = "background_checkbox";
private CheckBoxPreference mCheckBoxPreference;
public boolean mBgPref = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(this);
mCheckBoxPreference = (CheckBoxPreference) getPreferenceScreen()
.findPreference(KEY_BACKGROUND_COLOR);
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.pref_general);
}
}
// findPreference is deprecated... What should go here instead?
// persistBoolean gives me an error (persistBoolean(boolean) is undefined for the type SettingsActivity)
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
Preference mCheckBoxPref = findPreference(KEY_BACKGROUND_COLOR);
if (mCheckBoxPref.isEnabled()) {
persistBoolean(mBgPref);
}
}
}
MainActivity.java
...
// Preference change listener
private PreferenceChangeListener mPreferenceListener = null;
SharedPreferences prefs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
mBackground = (RelativeLayout) findViewById(R.id.background);
...
// Manage prefs
prefs = PreferenceManager.getDefaultSharedPreferences(this);
mPreferenceListener = new PreferenceChangeListener(); // Cannot instantiate the type PreferenceChangeListener
prefs.registerOnSharedPreferenceChangeListener(mPreferenceListener); //The method registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener) in the type SharedPreferences is not applicable for the arguments (PreferenceChangeListener)
...
* pref_general.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:defaultValue="false"
android:key="background_checkbox"
android:summary="@string/backgroundColorSummary"
android:title="@string/backgroundColor" />
</PreferenceScreen>
摘要:我找不到任何好的资源来帮助我做到这一点,而且似乎最近的偏好界面已经发生了很大变化,许多代码已被弃用和更改。我如何才能使这个简单的任务工作(选中复选框时更改我的背景颜色)?