1
我使用this指南为我的应用程序构建了设置活动/屏幕。示例代码如下。 我错过了什么能够添加一个工具栏到这个新的活动,并在左侧的后退箭头?使用PreferenceFragment构建的设置页面中的工具栏
的AndroidManifest.xml
....
<activity
android:name=".SettingsActivity"
android:label="Settings"
android:launchMode="singleTask"
android:theme="@style/AppTheme.NoActionBar"/>
....
的preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="pref_sync"
android:title="@string/pref_sync"
android:summary="@string/pref_sync_summ"
android:defaultValue="true" />
<ListPreference
android:dependency="pref_sync"
android:key="pref_syncConnectionType"
android:title="@string/pref_syncConnectionType"
android:dialogTitle="@string/pref_syncConnectionType"
android:entries="@array/pref_syncConnectionTypes_entries"
android:entryValues="@array/pref_syncConnectionTypes_values"
android:defaultValue="@string/pref_syncConnectionTypes_default" />
</PreferenceScreen>
SettingsFragment.java
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
...
}
SettingsActivity.java
public class SettingsActivity 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 SettingsFragment())
.commit();
}
}
工具栏有问题。我在getSupportActionBar()中得到一个NullPointerException。setHomeButtonEnabled(true); – adriennoir
“activity_main.xml”我想你的意思是为SettingsActivity单独的xml,而不是MainActivity xml。 我将其称为“settings_main.xml”。 是不是还需要setContentView(R.layout.settings_main)?我添加了它。 我尝试用Toolbar toolbar =(Toolbar)findViewById(R.id.app_bar)替换Toolbar toolbar =(Toolbar)findViewById(R.id.toolbar),并且工具栏显示但与Settings内容重叠。我的意思是,“设置”文本和箭头位于第一个PreferenceCategory文本上方,而工具栏上的彩色矩形不可见。 – adriennoir
@AdrienNoir我的帖子中的代码只是一个普通的活动+工具栏+片段给你一个它可能看起来如何的例子。你将不得不根据自己的需要来调整它,但重要的位是1。在清单2中指定父级。在YourActivity.onCreate()中获取工具栏并将其设置为显示箭头。该箭头会将您带回您在工具栏中指定的任何父项。没有我看你的应用程序,这是很难给你更多的建议... – Micro