【发布时间】:2016-03-01 18:48:01
【问题描述】:
我有一个 Android 应用程序,其 UserSettingsActivity 派生自 PreferenceActivity。当我打开此活动时,没有显示菜单栏。
为了在设置屏幕顶部显示“栏”或“操作栏”,我在 google 中搜索找到了 this link 和 this link。因为第一个答案似乎已经过时,所以我尝试了第二个链接中的建议不起作用。因此我再次发布这个问题。这是我正在使用的代码片段:
preferences.xml(我只添加了android.support.v7.widget.Toolbar 部分):
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
app:navigationContentDescription="@string/abc_action_bar_up_description"
android:background="?attr/colorPrimary"
app:navigationIcon="?attr/homeAsUpIndicator"
app:title="@string/action_settings"
/>
<ListPreference
android:title="@string/UpdateInterval"
android:summary="@string/UpdateIntervalText"
android:key="updateInterval"
android:defaultValue="24"
android:entries="@array/listArray"
android:entryValues="@array/listValues" />
<ListPreference
android:title="@string/LimitSetting"
android:summary="@string/LimitSettingText"
android:key="limitSetting"
android:entries="@array/limitArray"
android:entryValues="@array/limitValues" />
<Preference
android:key="reset"
android:title="Reset database"
android:summary="This will remove every entry in the database"
/>
</PreferenceScreen>
和UserSettingsActivity.java(我添加了onPostCreate 部分):
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
在标记线上。如果没有在这两个文件中添加的部分,应用程序确实可以工作,但是没有(操作)栏......
这里似乎有什么问题?
【问题讨论】:
-
No ActionBar in PreferenceActivity after upgrade to Support Library v21 的可能重复项,哦,您已经找到了我的问题。你也试过my own solution吗?
-
是的,我找到了你的问题。但正确的解决方案是什么?我要盲目尝试所有不同的可能性和组合吗?
-
好吧,我以自己的答案结束了那个案例。我建议使用更新的首选项支持库:plus.google.com/+AndroidDevelopers/posts/9kZ3SsXdT2T
-
由于我是绝对的初学者,看起来,我不能使用该电子邮件信息...
-
这是我的回答,可能对您有所帮助。 stackoverflow.com/a/49532356/8203967
标签: android