Articles of preferenceactivity

在PreferenceActivity中使用非默认首选项

使用PreferenceActivity,Android会自动保存简单的首选项,例如正在检查的checkbox等。我有几个问题: 1 – 这些偏好在哪里得到保存? 它与PreferenceManager.getDefaultSharedPreferences(Context)返回的首选项文件相同吗? 2 – 有没有办法使用不同的偏好集? 即使用context.getSharedPreferences(String name,int mode),您提供一个字符串来标识一组特定的首选项。 是否可以在这样返回的一组首选项中保存PreferenceActivity的首选项? 在此先感谢,巴里

如何使用EditTextPreference和Togglebutton创建一个Preference?

我正在尝试实现的是下面图像的基本和精确的复制品(我已经平方的偏好)。 按下首选项左侧的任何内容都应该打开一个对话框。 按下togglebutton将禁用/启用我在此首选项中设置的任何内容。 我一直在努力工作几个小时,我空手而归。 如何在PreferenceActivity中实现此function? 编辑:似乎人们误解了我的问题。 我弄清楚如何使用PreferenceActivity解决我的问题非常重要。 不是活动。 我不在乎我是需要用XML还是以编程方式来做。 请不要向我提供我不能在类似内容中使用的答案。 编辑2:增加了赏金 – 我真的需要一个答案

SharedPreferences不会在PreferenceActivity中保存/加载

编辑: 下面描述的问题是由于一个非常特殊的设备问题不是由任何编码相关的问题引起的。 我有一个preferenceActivity,其中有很多checkBoxPreferences。 checkBoxPreference假设保存默认的共享首选项文件,然后在我打开应用程序时再次调用以更新UI。 这不会像它想象的那样发生。 如果我关闭应用程序并将其重新打开,我的值仍然像他们想象的那样,但如果我使用任务管理器来结束应用程序或者如果我重新启动手机(当应用程序没有运行时),那么将调用defaultValues再次。 所以,我在onResume()中创建了一个SharedPreference来测试它。 SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 然后我检查该共享首选项中是否有密钥。 pref.contains(“myCheckBoxPreference”); 当我关闭并重新打开它时,它返回true。 如果我关闭任务管理器或关闭和打开电话,那么返回false。 所以,我尝试手动设置SharedPreference SharedPreferences.Editor editor = pref.edit(); editor.putBoolean(“myCheckBoxPreference”, myCheckBoxPreference.isChecked()); editor.commit(); 然后我在checkboxpreference值更改时调用了它。 我也尝试在onStop和onPause中调用它。 尽管如此,如果我关闭应用程序并将其重新打开,pref.contains将返回true,但如果我重新启动手机并重新打开,则返回false。 所以我尝试使用SharedPreferences文件。 在类声明中: public static final String PREFS = “prefs”; 在onResume()中: SharedPreferences pref = this.getSharedPreferences(PREFS, 0); 同样的行为,如果我只是关闭应用程序并将其重新打开,pref.contains仍会返回true,但如果我关闭并重新打开手机,它会返回false。 然后我尝试将myCheckBoxPreference的键值更改为与CheckBoxPreference的xml键不匹配的值,它仍具有相同的效果。 我从手机上卸下了应用程序,然后打开电源并重新打开,然后重新安装,它仍然具有相同的效果。

如何在对话框中获取动态加载(setView)的布局的元素(findViewById)?

我需要获取在xml布局中定义的EditText,该布局在首选项对话框中作为视图动态加载,即: public class ReportBugPreference extends EditTextPreference { @Override protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { super.onPrepareDialogBuilder(builder); builder.setView(LayoutInflater.from(ctx).inflate(R.layout.preference_report_bug_layout,null)); EditText edttxtBugDesc = (EditText) findViewById(R.id.bug_description_edittext); // NOT WORKING } } 编辑:解决方案由jjnFord @Override protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { super.onPrepareDialogBuilder(builder); View viewBugReport = LayoutInflater.from(ctx).inflate(R.layout.preference_report_bug,null); EditText edttxtBugDesc = (EditText) viewBugReport.findViewById(R.id.bug_description_edittext); builder.setView(viewBugReport); }

首选项上的首选项活动单击“侦听器”

我正在构建一个Preference Activity,其中列表中的大多数首选项将执行代码而不直接修改SharedPreference。 我的preferences.xml文件看起来像这样。 我的目标是在单击其中一个首选项时执行一段代码。 与Google Play设置首选项菜单中的“清除搜索记录”类似。 ( http://img.androidcookie.com/android/qnHbJX9.png ) 有谁知道如何使这成为可能吗? 我必须补充一点,我尝试使用findPreference(“KeyNameHere”),但它总是返回null。 谢谢! 编辑: 我在这段代码中添加并实现了OnPreferenceClickListener: @Override public boolean onPreferenceClick(Preference preference) { return false; } 但这种方法永远不会被调用。 还有另一种方法吗? 编辑2: 我发现如果我取出PreferenceCategory标签,所以我留下了这个: 并称之为: getPreferenceScreen().setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { return false; } }); 然后我实际上从click事件中得到了一个响应。 唯一的缺点是我必须删除首选项分组。 任何人都知道为什么这是和任何方法来解决它?

Android – 带有Preference活动的DataBinding

我在xml中设置数据绑定但是当我转到首选项活动以实际设置绑定时我不能。 数据绑定xml所在的文件名为preference.xml,因此我假设应该有一个名为PreferencesBinding的生成类,而不是。 它应该不是自动生成的吗? 另外,我在preferenceActivity.java中的代码不会编译以下内容: Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PreferencesBinding binding = DataBindingUtil….. //what do put here ??? this is preferenceactivity not Activity Admin user = new Admin(true); binding.setUser(user);//this what i want to do addPreferencesFromResource(R.xml.preferences);//this would not be necessary if i can get dataBinding to work //..rest of code not important } 我开始认为数据绑定不适用于偏好屏幕,任何人都可以帮忙吗? […]

Android 4.4中左侧和右侧的AppCompatPreferenceActivity奇怪填充

我有一个扩展AppCompatPreferenceActivity的SettingsActivity。 我的pref_headers.xml看起来像这样: 片段代码如下所示: @TargetApi(Build.VERSION_CODES.HONEYCOMB) public class ProfileFragment extends PreferenceFragment { @BindView(R.id.email) TextView email; @BindView(R.id.username) TextView username; @BindView(R.id.loadingPanel) RelativeLayout loadingPanel; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_profile, container, false); ButterKnife.bind(this, rootView); if (setActionbarListener != null) { setActionbarListener.setActionbarTitle(“Profil”); } loadingPanel.setVisibility(View.VISIBLE); UsernameHandler uHandler = UsernameHandler.getInstance(new UsernameResult() { @Override public void finished(String […]

在Android上构建兼容性PreferenceFragment

我的android应用程序使用兼容性库(特别是Loaders )。 我需要能够在任何地方使用兼容性组件,包括我的PreferenceActivity 。 遗憾的是,支持库不包含基于片段的PreferenceActivity ,也不包括PreferenceFragment类。 我想要创建自己的PreferenceFragmentActivity和CompatPreferenceFragment(基本上是谷歌忽略的)。 其他人,包括StackOverflow上的一些人,已经提到完成这个确切的事情,所以我公开寻求任何forms的帮助 – 指导,提示,建议,代码示例(如果您愿意并且能够分享),或者您认为的任何其他内容与这个问题有关。 如果有人也可以将我引导到人们提交Androidfunction请求的网站,我想将我的名字添加到希望Google在支持库的未来版本中解决此问题的人员列表中。

PreferenceActivity中的DialogFragment

我已经定义了dialogfragments (因为Android文档说它更好,实际上它是)但现在我想在PreferenceActivity使用它。 问题是我不能在那里使用getSupportFragmentManager()而我不能使用PreferenceFragment,因为它不兼容兼容库。 看起来像一个路障场景。 任何人都可以就此提出建议吗?

android – 如何在Android 3.0中为PreferenceActivity设置自定义布局?

我正在使用minSdkVersion =“11”开发应用程序,这是适用于平板电脑和Android 4.0及更新版本的应用程序。 我已经仔细研究过这个话题的互联网,但没有find太多。 要为以前版本的Android SDK实现自定义布局,我们只需要使用ListView创建布局(比如preference.xml),其id等于android.R.id.list并使用setContentView方法。 preference.xml: 在Android 3.0中,事情发生了变化,使用片段实现了Preferences。 这就是我的preference_headers.xml文件的样子: MyPreferenceActivity.java: public class MyPreferenceActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.preference); // Add a button to the header list. if (hasHeaders()) { Button button = new Button(this); button.setText(“Log out”); setListFooter(button); } } /** * Populate the activity with the top-level headers. […]