单页PreferenceActivity瓦特/无标题/片段?
我试图完成一些我认为很简单的工作,但是我很困惑如何使用PreferenceActivity类和xml首选项标记来完成它。
当用户点击应用程序设置图标时,我想让他们看到一个checkbox和列表的小列表。 我只有一个偏好片段。 到目前为止,我可以设置PreferenceActivity xml文件(preferences.xml和偏好片段xmls)来显示首选项片段的单个标头。 当用户select该标题的首选项屏幕正是我想要的,但是,我不能找出一种方法来跳过显示第一个标题屏幕。
点击设置/首选项图标显示一个单独的标题,然后点击以获得实际的设置/首选项似乎是一种浪费。
我明白,如果你想分类你的偏好,这可能是非常有帮助的,但是对于一些简单的事情来说,这会增加额外的开销,而且看起来相当笨拙。
我希望我很清楚。 总之这是我的问题:
什么是使用PreferenceActivity类和偏好标题标签简单地显示一个没有标题的选项屏幕的新的首选方式?
在环顾四周后,看起来好像我正在尝试做一些以前的方法直接做的事情。 我试图做到这一点,而不使用任何弃用的function。
在此先感谢,B.
新的首选方法是显示一个PreferenceFragment
作为任何活动的主要内容。 它不需要是PreferenceActivity
。 查看API演示示例
public class FragmentPreferences extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the main content. getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragment()).commit(); } public static class PrefsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); } } }
我正在寻找与这个问题相匹配的答案。 最终,我从其他几个来源处理了这个问题。 对于那些可能还想要它回答的人来说,这是对我有用的。 (注意 – 在这个项目中min和target SDK都设置为15)。
- 转储PreferenceHeaders,你将不需要它们。
- 使用单页设置创build首选项屏幕。
- 创build一个偏好活动类(下面的SettingsActivity)。
- 创build一个内联类,扩展PreferenceFragment(下面的LocationFragment)。
- 在Manifest中定义类。
- 开始任务 – 请参阅下面的菜单代码。
显示单个设置屏幕的首选项类。
public class SettingsActivity extends PreferenceActivity { private final static String TAG = "SettingsAcitivity"; public SettingsActivity() {} @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyLog.d(TAG, "onCreate"); getFragmentManager().beginTransaction() .replace(android.R.id.content, new LocationFragment()).commit(); } public class LocationFragment extends PreferenceFragment { private final static String TAG = "LocationFragment"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyLog.d(TAG, "onCreate"); addPreferencesFromResource(R.xml.locationsettings); } } }
显示设置的代码:
@Override public boolean onOptionsItemSelected(MenuItem item) { MyLog.d(TAG, "onOptionsItemSelected"); switch (item.getItemId()) { case R.id.menu_main_help: break; case R.id.menu_main_about: break; case R.id.menu_main_settings: MyLog.d(TAG, "Settings"); Intent settingsIntent = new Intent(this, SettingsActivity.class); startActivity(settingsIntent); break; } return true; }
后退键终止SettingsActivity。 内置的优先例程保存任何更改。 我有一个getSettings()onResume函数更新调用活动(在这种情况下,MainActivity)使用的任何更改设置。
而已。