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