所以我有一个具有FragmentPagerAdapter的Activity,在每个片段中我有另外两个Fragment(这里称为a和b)。片段a是ListFragment,而片段b只是显示值的普通片段。
这里有两个问题......
1。)我无法从片段B中的活动中获取视图
2。)如果我注释掉了抓取,而不是在选择一个项目后在手机上显示片段A而不是B,那么IT会在同一个观看者上显示。
但是,我似乎无法正确加载我的布局。但是,如果我删除b一切似乎工作正常......
活动加载以下布局......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.viewpagerindicator.TitlePageIndicator
android:id="@+id/indicator"
android:padding="10dip"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mainpager"/>
</LinearLayout>
My First Fragment如下所示
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<fragment android:name="com.gleason.apa.fragment.BarListFragment"
android:id="@+id/bar_list_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.gleason.apa.fragment.BarEditFragment"
android:id="@+id/bar_edit_fragment"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
片段A
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bar Name: " />
<TextView
android:id="@+id/bar_name_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Address: " />
<TextView
android:id="@+id/bar_address_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
Fragement B
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bar Name" />
<EditText
android:id="@+id/bar_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="Name"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Address" />
<EditText
android:id="@+id/bar_address"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="Address"/>
</LinearLayout>
<Button
android:id="@+id/submitBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Add Game"/>
</LinearLayout>
然而,当我尝试编译并运行时,我得到以下内容......
android.view.InflateException: Binary XML file line #6: Error inflating class fragment
java.lang.NullPointerException
有什么想法吗?
更新:
因此空指针异常来自BarEditFragment ...
@Override
public void onActivityCreated(Bundle savedInstanceState) {
....
name = (EditText) activity.findViewById(R.id.bar_name);
address = (EditText) activity.findViewById(R.id.bar_address);
Button submit = (Button) activity.findViewById(R.id.submitBar);
}
所有这些都回来了。
此外,如果我删除它们,片段显示两者,即使在我的手机上。所以它并排显示两个小片段,而不是它应该的2个“屏幕”。
这也不起作用......
activity.getFragmentManager().findFragmentById(R.id.bar_edit_fragment).getView().findViewById(R.id.bar_name);
答案 0 :(得分:0)
我缺少的是你需要创建布局,告诉它是单窗格还是双窗格。解决这个问题的最佳方法是使用NewsReader示例作为模板。