Articles of android preferences

如何从PreferenceScreen上的文本条目打开对话框?

在我的Android应用程序中,如果用户选择在PreferenceScreen中看起来像纯文本的内容,我想显示一个Dialog。 我见过如何从首选项屏幕打开AlertDialog? ,但该解决方案从CheckBoxPreference启动。 在我的情况下,我想从看起来像TextView的东西(或者我想它可能是一个按钮)启动,然后它将导致我已经拥有的“关于”对话框。 有什么建议怎么做? 谢谢。

SharedPreferences的最佳实践

关于我正在寻找的SharedPreferences一组问题: 什么,为什么,什么时候? 它是如何在里面工作的? 使用它的最佳实践? 这里只回答了其中一些问题。 这就是我进行调查和测试的原因。 当我回答我自己的问题时,我决定与其他人分享答案。

validation首选项。 Android的

我有2个字段的PreferenceActivity 。 一个URL 时间以秒为单位 我需要validation第一个有效URL,第二个validation整数值。 我如何用标准方法做到这一点?

PreferenceFragment.findPreference始终返回NULL

我目前正在尝试创建一个设置菜单,它将显示一个MultiSelectListPreference ,以从您的联系人列表中选择多个联系人。 此时,我正在接收NullPointerException ,当我尝试MultiSelectListPreference#setEntryValue(CharSequence[])如果我把setEntries放在第一位,那一个抛出相同的exception。 我已经提出了一个断点,一步一步看到会发生什么。 variables被填充因为它们存储了Strings ,它们可以包含一个String “null”,所以我猜如果没有Display_Name可用,它就不会失败。 我将findPreference建立在这个答案的例子上 有人有想法吗? 如果您需要更多信息,请告诉我。 谢谢阅读! package be.wdk.sendtowork;contactNumberArray import android.database.Cursor; import android.os.Bundle; import android.preference.MultiSelectListPreference; import android.preference.PreferenceFragment; import android.provider.ContactsContract; import android.util.Log; import android.widget.Toast; public class PreferenceClass extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Integer countContacts = 0; String[] projection = new String[]{ ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.PHOTO_URI }; String […]

setDisplayHomeAsUpEnabled()在PreferenceActivity中不起作用

我有一个SettingsActivity ,它扩展了PreferenceActivity以显示我的应用程序中的设置。 有一个后退箭头,但它不起作用。 这是SettingsActivity.java文件的代码: public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener{ private AppCompatDelegate mDelegate; public static final String RESET_PASSWORD_KEY = “reset_password”; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub getDelegate().installViewFactory(); getDelegate().onCreate(savedInstanceState); super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); SharedPreferences sharedPreferencesCompat = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); Preference myPref = (Preference) findPreference(RESET_PASSWORD_KEY); myPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { //open browser […]

如何使TextView看起来像Setting的PreferenceCategory标题

这应该是很容易理解的东西,但我无法在任何地方find答案。 我试图使常规TextView看起来非常相似,在任何应用程序的设置上显示的首选项类别标题。 这就是我的意思: 现在,我尝试了一些事情,但我似乎没有把它弄好。 例如,我尝试设置此: android:drawableBottom=”?android:attr/dividerVertical” 到我的TextView,但似乎根本没有做任何事情,我的TextView仍然如下所示: 我也尝试过设置一个可绘制的: 但那也没出现在我的文字上。 这是现在的TextView样式: wrap_content match_parent @android:color/holo_blue_dark 48dp center_vertical 8dp 任何想法,将不胜感激。

在Android上多选ListPreference

在Android上实现多选(Checkset)ListPreference的任何想法? 我是否必须扩展ListPreference? 是否有任何课程已经记录在案? 谢谢

getDefaultSharedPreferences()和getPreferences()之间有什么区别?

我目前正在参加“开发Android应用程序”Udacity课程。 在“第3课:新活动和意图>使用SharedPreferences”部分中,教师要求我在Android开发者网站上挖掘如何从SharedPreferences获取用户首选项。 但是,我发现官方文档和课程解决方案之间存在差异。 Udacity课程的解决方案说,为了获取PreferenceActivity的SharedPreferences实例,你应该调用: SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); (其中getActivity()只是这里的Context ,因为它在Fragment被调用。) 虽然Android Developer Site上的官方文档表明您应该致电: SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE) 那么PreferenceManager.getDefaultSharedPreferences(Context context)和Activity.getPreferences(int mode)之间的区别是什么? 请注意:此问题不涉及需要文件名的getSharedPreferences() 。 这是关于getPreferences()和getDefaultSharedPreferences()之间的区别。 提前致谢。

Android:如何在输入时从TimePicker获取时间

我有一个DialogPreference实现了一个简单的TimePicker.OnTimeChangedListener(见下文)。 通过单击+/-按钮设置时间​​非常有效。 但是我不知道如何在用户输入时直接进入文本字段时保存timepicker的状态。 访问当前文本字段值可能就足够了,因此我可以将其保留在onDialogClosed中。 但是timePicker.getCurrentHour()不会这样做。 请帮忙… public class TimePreference extends DialogPreference implements TimePicker.OnTimeChangedListener { // … @Override public void onTimeChanged(TimePicker view, int hours, int minutes) { selectedHours = hours; selectedMinutes = minutes; } @Override public void onDialogClosed(boolean positiveResult) { if(positiveResult) { String timeString = selectedHours + “:” + selectedMinutes; if(isPersistent()) { persistString(timeString); } } } […]

如何在Android上的首选项中处理长文本?

背景 我正在创建一个具有一些设置的应用程序,我想使用内置的PreferenceActivity或PreferenceFragment来完成工作 问题 一些偏好有一个很长的标题,我无法缩短,而且我认为,如果我本地化应用程序(翻译成多种语言),我将面临同样的问题(例如德语,有时很长的单词)。 你在这种情况下得到的只是文本的开头,然后是“……”(或更少的点,这对btw没有多大意义)。 例: 我试过的 我知道PreferenceActivity从ListActivity扩展,因此我可以将其适配器更改为我想要的任何内容,但这将删除它的工作方式。 我也知道我可以从每个types的首选项类扩展,使用“onCreateView”方法来引用创建的视图,然后访问它的子类,但这很奇怪,不是吗? 我的意思是,它几乎就像假设它永远不会改变它的外观。 编辑:这是我尝试过的示例代码: 从每个首选项类扩展,并在每个首选项中使用: … @Override protected View onCreateView(final ViewGroup parent) { final View view=super.onCreateView(parent); ViewUtil.handlePreferenceTitleTextView(view); return view; } … //ViewUtil.java : private void handlePreferenceTitleTextView(final View v) { final TextView titleTextView=(TextView)v.findViewById(android.R.id.title); if(titleTextView!=null) titleTextView.setSingleLine(false); } 它有效,但我不认为这是推荐的,因为Google可能会改变偏好设置视图的工作方式。 这个问题 如何在Android上的首选项标题中处理长文本? 是否有可能使它具有椭圆形/选框(以便它将有一个animation来显示所有内容)? 或者也许自动适合字体大小? 或者设置它有自动换行? 还是一个水平scrollView,允许用户滚动阅读文本的其余部分? 是否有一个如何处理此类案件的惯例? 也许长按一下可以看到整个文本的吐司/对话框?