Android 单页首选项活动是否没有标题/片段?
我正试图完成一些我认为非常简单的事情,但对于如何使用PreferenceActivity类和xml preference头标记来完成它,我感到困惑 当用户点击应用设置图标时,我希望他们看到一个小的复选框和列表列表。我只有一个偏好片段。到目前为止,我可以设置PreferenceActivityXML文件(preferences.xml和PreferenceFragmentsXMLS)来显示PreferenceFragment的单个头。当用户选择该标题时,首选项屏幕正是我想要的,但是,我无法找到跳过显示第一个标题屏幕的方法 必须点击设置/首选项图标,显示一个标题,然后点击该标题才能进入实际设置/首选项,这似乎是一种浪费 我知道如果你想对你的偏好进行分类,这会非常有帮助,但对于一些简单的事情来说,这会增加开销,而且看起来相当笨拙 我希望我是清楚的。简言之,我的问题是: 使用PreferenceActivity类和PreferenceHeader标记只显示一个没有标题的选项屏幕的新首选方式是什么 在环顾四周之后,看起来我正试图以一种直截了当的方式做旧方法所做的事情。我试图在不使用任何不推荐使用的函数的情况下完成此操作 提前感谢,,Android 单页首选项活动是否没有标题/片段?,android,android-fragments,android-preferences,Android,Android Fragments,Android Preferences,我正试图完成一些我认为非常简单的事情,但对于如何使用PreferenceActivity类和xml preference头标记来完成它,我感到困惑 当用户点击应用设置图标时,我希望他们看到一个小的复选框和列表列表。我只有一个偏好片段。到目前为止,我可以设置PreferenceActivityXML文件(preferences.xml和PreferenceFragmentsXMLS)来显示PreferenceFragment的单个头。当用户选择该标题时,首选项屏幕正是我想要的,但是,我无法找到跳过
B.我在寻找与这个问题相匹配的答案。最终,我从其他几个渠道找到了答案。对于那些仍然希望得到答案的人来说,以下是对我有效的方法。(注意-在本项目中,最小和目标SDK均设置为15。)
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;
}
返回键终止设置活动。内置的首选项例程保存所有更改。我使用的onResume函数有一个getSettings(),用于更新调用活动(本例中为MainActivity)使用的任何更改的设置
就是这样。新的首选方式是显示单个
首选片段作为任何活动的主要内容。它不需要是首选项活动
。请参阅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);
}
}
}
这在较低的API 11上不起作用。。。由于API 11中添加了getFragmentManager()方法,因此如果使用support library.yup,可以调用getFragmentManager()!很好的解决方案。。我没有意识到PreferenceFragment也可以在不嵌套在PreferenceActivity中的情况下使用!;)@t您可以使用getSupportFragmentManager。截至2017年12月,可能值得注意的一点是:将扩展活动
替换为扩展AppCompatActivity
意味着操作栏包含在顶部。如果您仍然看到Fragmant顶部的旧标题,确保删除了onBuildHeaders()
方法。我也有类似的要求。最终使用了这个解决方案