gpt4 book ai didi

java - Android 应用程序设置菜单,无法使其工作

转载 作者:太空宇宙 更新时间:2023-11-04 15:04:52 25 4
gpt4 key购买 nike

我现在至少已经阅读了六个教程,但无法获得适用于我的应用程序的简单设置菜单。

什么有效

  • Activity 菜单中的设置
  • 设置 Activity 打开(偏好 Activity )
  • 显示“深色背景”的设置 fragment ,并带有复选框
  • 我可以单击和取消单击该复选框,它就会被记住

** 什么不起作用**

  • 我无法获取用于更改主要 Activity 中的值的复选框
  • 我无法在单击后立即更改值并根据该值更新我的布局

基本上,我有一个带有一个选项的设置菜单。 “深色背景?”这要么是真的,要么是假的。我希望一旦将其设置为 true(选中),我的主要 Activity (和设置 Activity )的背景都会更改为不同的颜色(现在什么颜色都没关系)。

这是我的代码,请同时注意注释...

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>

摘要:我找不到任何好的资源来帮助我做到这一点,而且首选项界面最近似乎发生了很大变化,并且很多代码已被弃用和更改。我怎样才能完成这个简单的任务(当选中复选框时更改我的背景颜色)?

最佳答案

我最近发现了同样的事情,我做了一些研究,我认为它与这个错误有关:

http://code.google.com/p/android/issues/detail?id=6052

我认为发生的事情是在 android 版本之间发生的,他们已经删除了这个方法:

现在期望你这样做:

listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {

//Stuff here.

}
};


}

@Override
public void onResume() {
super.onResume();
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(listener);

}

@Override
public void onPause() {
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener);
super.onPause();
}

关于java - Android 应用程序设置菜单,无法使其工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22135053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com