Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单页首选项活动是否没有标题/片段?_Android_Android Fragments_Android Preferences - Fatal编程技术网

Android 单页首选项活动是否没有标题/片段?

Android 单页首选项活动是否没有标题/片段?,android,android-fragments,android-preferences,Android,Android Fragments,Android Preferences,我正试图完成一些我认为非常简单的事情,但对于如何使用PreferenceActivity类和xml preference头标记来完成它,我感到困惑 当用户点击应用设置图标时,我希望他们看到一个小的复选框和列表列表。我只有一个偏好片段。到目前为止,我可以设置PreferenceActivityXML文件(preferences.xml和PreferenceFragmentsXMLS)来显示PreferenceFragment的单个头。当用户选择该标题时,首选项屏幕正是我想要的,但是,我无法找到跳过

我正试图完成一些我认为非常简单的事情,但对于如何使用PreferenceActivity类和xml preference头标记来完成它,我感到困惑

当用户点击应用设置图标时,我希望他们看到一个小的复选框和列表列表。我只有一个偏好片段。到目前为止,我可以设置PreferenceActivityXML文件(preferences.xml和PreferenceFragmentsXMLS)来显示PreferenceFragment的单个头。当用户选择该标题时,首选项屏幕正是我想要的,但是,我无法找到跳过显示第一个标题屏幕的方法

必须点击设置/首选项图标,显示一个标题,然后点击该标题才能进入实际设置/首选项,这似乎是一种浪费

我知道如果你想对你的偏好进行分类,这会非常有帮助,但对于一些简单的事情来说,这会增加开销,而且看起来相当笨拙

我希望我是清楚的。简言之,我的问题是:

使用PreferenceActivity类和PreferenceHeader标记只显示一个没有标题的选项屏幕的新首选方式是什么

在环顾四周之后,看起来我正试图以一种直截了当的方式做旧方法所做的事情。我试图在不使用任何不推荐使用的函数的情况下完成此操作

提前感谢,,
B.

我在寻找与这个问题相匹配的答案。最终,我从其他几个渠道找到了答案。对于那些仍然希望得到答案的人来说,以下是对我有效的方法。(注意-在本项目中,最小和目标SDK均设置为15。)

  • 转储首选项标题,您将不需要它们
  • 创建带有单页设置的首选项屏幕
  • 创建首选项活动类(下面的设置活动)
  • 创建扩展PreferenceFragment的内联类(下面是LocationFragment)
  • 在清单中定义类
  • 启动任务-请参阅下面的菜单代码
  • 显示单个设置屏幕的首选项类

    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()
    方法。我也有类似的要求。最终使用了这个解决方案