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>
摘要:我找不到任何好的資源來幫助我做到這一點,而且似乎最近的偏好界面已經發生了很大變化,許多代碼已被棄用和更改。我如何才能使這個簡單的任務工作(選中複選框時更改我的背景顏色)?