Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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 如何在PreferenceActivity中使用ActionBar?_Android - Fatal编程技术网

Android 如何在PreferenceActivity中使用ActionBar?

Android 如何在PreferenceActivity中使用ActionBar?,android,Android,我有一个android应用程序,它的usersetingsactivity源自PreferenceActivity。打开此活动时,不显示任何菜单栏 为了在设置屏幕的顶部显示“栏”或“动作栏”,我在google中搜索了“查找”和“操作栏”。因为第一个答案似乎过时了,所以我尝试了第二个链接中的建议,但它不起作用。因此,我再次发布这个问题。。以下是我正在使用的代码片段: preferences.xml(我只添加了android.support.v7.widget.Toolbar部分): 但是,我得到以

我有一个android应用程序,它的
usersetingsactivity
源自
PreferenceActivity
。打开此活动时,不显示任何菜单栏

为了在设置屏幕的顶部显示“栏”或“动作栏”,我在google中搜索了“查找”和“操作栏”。因为第一个答案似乎过时了,所以我尝试了第二个链接中的建议,但它不起作用。因此,我再次发布这个问题。。以下是我正在使用的代码片段:

preferences.xml
(我只添加了
android.support.v7.widget.Toolbar
部分):

但是,我得到以下错误:

Caused by: java.lang.ClassCastException: android.support.v7.widget.Toolbar cannot be cast to android.preference.Preference
在标记线上。如果没有这两个文件中添加的部分,应用程序确实可以工作,但是没有(操作)栏

这里有什么问题吗?

试试这个。
使用AppCompatActivity扩展您的活动

然后添加工具栏。请参阅此处:-

首选项活动现在已被弃用。在任何其他活动中使用PreferenceFragment,它可以从PreferenceActivity以外的任何父活动扩展而来

可能重复的,哦,你已经找到我的问题了。你也试过了吗?是的,我找到了你的问题。但正确的解决方案是什么?我应该盲目地尝试所有不同的可能性和组合吗?好吧,我以我自己的答案结束了这个案例。我建议使用较新的首选项支持库:因为我似乎是一个绝对的初学者,我不能使用这些电子邮件信息……这是我的答案,可能会对您有所帮助。如果没有一些代码示例,你的答案对我来说毫无用处。我是一个绝对的初学者,我不知道在哪里放置
首选片段
,也不知道如何更改所有其他代码以使其按照您的建议工作……请给出一个代码示例,说明如何准确更改我的代码。我是一个初学者,你提供的链接中的信息在我看来就像天体物理计算会出现在你面前。。。
public class UserSettingActivity extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();

    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);

        LinearLayout root = (LinearLayout)findViewById(android.R.id.list).getParent().getParent().getParent();
        Toolbar bar = (Toolbar) LayoutInflater.from(this).inflate(R.xml.preferences, root, false);
        root.addView(bar, 0); // insert at top
        bar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }

    public class MyPreferenceFragment extends PreferenceFragment {
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences); // <<-- ERROR HERE
            // doing something here

        }
    }

}
Caused by: java.lang.ClassCastException: android.support.v7.widget.Toolbar cannot be cast to android.preference.Preference