Articles of preferenceactivity

如何在对话框中获取动态加载(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. […]

更改PreferenceScreen时,请保持操作栏显示

我正在尝试在我的偏好设置屏幕中显示操作栏。 为此,我在SettingActivity中添加了以下代码 public class PreferencesActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.preferences_activity); getFragmentManager().beginTransaction() .replace(R.id.container, new PreferencesFragment()).commit(); getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } } 然后是我在PreferencesFragment中的其余代码。 这样可以正常工作,但只要按下PreferenceScreen首选项,操作栏就会隐藏。 如果我回到偏好主屏幕,我可以再次看到它。 知道如何显示操作栏(并使用PreferenceScreen标签更新)吗? 编辑:查看PreferenceScreen代码,当单击PreferenceScreen时,它看起来像是一个全屏对话框。 因为我的偏好有标题,所以Dialog也应该显示标题……但事实并非如此 // Set the title bar if title is available, else no title bar final CharSequence title = getTitle(); Dialog dialog = […]

设置多个SharedPreferences实例/文件的默认值

假设我有一个应用程序将首选项保存到两个文件, preferences1.xml和preferences2.xml 。 然后,我可以使用以下代码检索对相应对象的引用: SharedPreferences sharedPrefs1 = getSharedPreferences(“preferences1”, MODE_PRIVATE); SharedPreferences sharedPrefs2 = getSharedPreferences(“preferences2”, MODE_PRIVATE); 通过这种方式,我可以操纵两者的首选项并注册侦听器以进行更改。 我对这两个文件的初始化有一些疑问,使用setDefaultValues : 问题1 – PreferenceFragment上下文 :我创建了一个带有两个PreferenceFragments的PreferenceActivity,并且在每个PredenceFragate的onCreate方法中执行以下代码(对于片段1和2,将X替换为1和2): PreferenceManager pm = getPreferenceManager(); pm.setSharedPreferencesName(“preferencesX”); PreferenceManager.setDefaultValues(getActivity(),R.xml.preference_fragmentX, false); 我已经看到这两个片段在启动时正确地设置了它们的默认值。但是,鉴于我只能在应用程序的shared_prefs目录中看到一个_has_set_default_values.xml文件,它如何理解属性preferences1.xml和preferences2.xml已经设置好了吗? 在第一个打开的PreferenceFragment中调用setDefaultValues后立即创建此文件,但即使在此之后,如果我打开第二个PreferenceFragment,它也会正确初始化默认值。 它是如何理解它尚未初始化preferences2.xml以及_has_set_default_values.xml的目的是什么,因为它不包含有关哪些优先文件已被初始化的信息? 问题2 – 标准活动上下文 :当我启动我的应用程序时, PreferenceActivity不是第一个启动的活动,用户可能永远不会打开它,所以我想在主Activity中初始化两个首选项文件及其默认值,我怎样才能做到这一点? 对于默认的共享首选项,很容易: PreferenceManager.setDefaultValues(this, R.xml.default_preferences, false); 对于两个首选项文件,我该怎么办? 我无法执行以下操作,因为我无法在PreferenceFragment类中检索PreferenceManager的实例: PreferenceManager pm = getPreferenceManager(); // NOT AVAILABLE AND NOT WANTED pm.setSharedPreferencesName(“preferences1”); PreferenceManager.setDefaultValues(getActivity(),R.xml.preference_fragment1, false); […]

如何动态显示和隐藏Android上的首选项?

有没有办法动态显示和隐藏首选项? 在我的情况下,我有一个checkbox首选项,可以禁用或启用2个首选项组之一(“with-”和“without-handicap”组)。 虽然这将是桌面环境中理想的GUI,但“带障碍”几乎占据整个屏幕,而另一个“无障碍”只占用屏幕的一小部分。 我不想同时显示两个组,而是一次只显示其中一个组,并在checkbox更改时动态显示或隐藏2个组。 有没有办法做到这一点?