我想将几个PreferenceFraments
放入FragmentTabHost
. 基于现有的标准示例,代码如下。
布局 XML(部分):
<android.support.v4.app.FragmentTabHost
android:id="@android:id/tabhost"
android:layout_width="wrap_content"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="480dp"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
主要活动(在 onCreate 中):
tabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
tabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
tabHost.addTab(
tabHost.newTabSpec("t1").setIndicator(getString(R.string.first), null),
FirstFragment.class, null);
tabHost.addTab(
tabHost.newTabSpec("t2").setIndicator(getString(R.string.second), null),
SecondFragment.class, null);
问题:标签主机是用 2 个空标签创建的(只显示标签),因为(如果我理解正确的话)我应该在相应的onCreateView
方法中膨胀片段。
但是他们是PreferenceFragments
,所以他们被夸大了onCreate
:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
PreferenceManager.setDefaultValues(getActivity(), R.xml.first, false);
// this is the method which inflates the layout according to the docs
addPreferencesFromResource(R.xml.first);
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
所以,问题是我应该写什么onCreateView
才能在标签内获得膨胀的偏好?或者我应该以某种方式告诉系统首选项屏幕将从 XML 创建其所有视图?
所有示例都inflater.inflate(layoutResId, ...)
与自定义资源 ID 一起使用,但在这种情况下,系统(库)应该提供一些底层布局,而且我不确定标准充气器是否适合来自偏好 XML 的偏好布局充气。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// return inflater.inflate(android.R.layout.list_content, container, false);
return ???;
}
注释字符串没有帮助(tabcontent 保持为空)。此外,通过使用android.R.layout.list_content
,它建议最低 API 级别 11,但我使用支持库来支持较旧的 Android 版本。
提前致谢。