我一直在关注此developer.android.com教程,尝试将偏好片段添加到我的应用中。我遇到的问题是,虽然PreferenceFragment
显示,但没有操作栏,背景是透明的。理想情况下,我希望它看起来与开发指南中的类似。
我尝试在android:background
文件中添加preferences.xml
标记,并制作单独的布局xml文件并使用
` @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View root = inflater.inflate(R.layout.fragment_settings,container, false) ;
return root;
}`
在下面的SettingsFragment.java
文件中。 (我在应用程序崩溃时删除了这两个)。
我的代码如下:
preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!-- settings menu -->
<PreferenceCategory
android:title="@string/pref_title_sample_size"
android:key="pref_sample_size"
>
<EditTextPreference
android:key="pref_sample_freq"
android:summary="@string/pref_summery_sample_freq"
android:title="@string/pref_title_sample_freq"
android:defaultValue="1"
/>
<EditTextPreference
android:key="pref_total_size"
android:summary="@string/pref_summary_total_sample"
android:title="@string/pref_title_total_sample"
android:defaultValue="2"
/>
</PreferenceCategory>
SettingsFragment.java
public class SettingsFragment extends PreferenceFragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
以及MainActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings:
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
return true;
}
return super.onOptionsItemSelected(item);
有人能指出我想要的方向吗?
答案 0 :(得分:0)
我不确切地知道你想要什么,但也许你想在你的活动中制作headers
当您选择commit()
Fragment
{{1}}菜单时,我认为您错了
你应该读这个:Preference Headers from Google
还有:Preference Headers Tutorial
让我知道它是否有帮助,以及是否是您想要的。
答案 1 :(得分:0)
如果您想在偏好设置上添加操作栏,请在SettingsFragment.java
onCreate
内添加此操作栏:
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setTitle(R.string.title_activity_preference);
getActionBar().setBackgroundDrawable(new ColorDrawable(Color.BLUE));
getActionBar().setDisplayShowTitleEnabled(true);
在onCreate方法之外,添加:
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case android.R.id.home:
SettingsFragment.this.finish();
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
new MenuInflater(this).inflate(R.menu.main, menu);
return(super.onCreateOptionsMenu(menu));
}