在我的应用程序中,我使用带有标签导航的SherlockActionBar。 在扩展SherlockFragmentActivity的活动MyFragmentActivity中,我添加了3个带有片段的选项卡
mTabsAdapter.addTab(
bar.newTab().setText(getString(R.string.filmtab)),
FragmentFilm.class, null);
mTabsAdapter.addTab(
bar.newTab()
.setText(getString(R.string.cinematab)),
FragmentCinema.class, null);
mTabsAdapter.addTab(
bar.newTab()
.setText(getString(R.string.dintornitab)),
FragmentPdi.class, null);
FragmentPdi类有这个代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.tab_pdi_info, container, false);
return view;
}
,布局是
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ListView
android:id="@+id/list_places"
android:layout_width="wrap_content"
android:layout_height="fill_parent" >
</ListView>
</RelativeLayout>
在我想要的MyFragmentActivity中找到listview以这种方式填充它:
final ListView elencoPlaces = (ListView)findViewById(R.id.list_places);
...
但我有NullPointerException
!
为什么?
在另一个片段(FragmentFilm和FragmentCinema)中,我有其他视图,如textview,没有这个 问题!!
请帮帮我! 谢谢。
P.S。这是用于在片段中填充视图的正确方法,还是我必须在片段类中填充视图?如果第二个我如何将变量从活动传递给片段?
答案 0 :(得分:0)
如果布局文件中的所有内容都是列表视图,请不要打扰覆盖oncreateview。默认布局会给你那么多。然后你可以使用ListFragment中内置的方法 - 比如getListView()和setListAdapter()。
答案 1 :(得分:0)
好的,但我不明白为什么我有另一个片段FragmentCinema,我有这个xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:paddingTop="10dip" android:id="@+id/otherCinemas" android:layout_width="fill_parent" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:orientation="horizontal" android:id="@+id/plotSeparatorOtherCin" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/txtProgrammation">
<ImageView android:layout_gravity="center_vertical" android:background="@drawable/palm_divider_line" android:layout_width="20.0dip" android:layout_height="wrap_content" android:layout_marginRight="5.0dip" />
<TextView android:layout_gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/altricinema" android:textStyle="bold" />
<ImageView android:id="@+id/showOtherCinemas"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_action_freccia_cinema"
/>
<ImageView android:layout_gravity="center_vertical" android:background="@drawable/palm_divider_line" android:layout_width="fill_parent" android:layout_height="wrap_content" />
</LinearLayout>
<ListView
android:id="@+id/listOtherCinemas"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_below="@id/plotSeparatorOtherCin"
android:visibility="gone" >
</ListView>
</RelativeLayout>
和这段代码:
public class FragmentCinema extends SherlockFragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.tab_cinema_info, container, false);
return view;
}
}
当我使用findViewbyId时 最终ListView cinemasOther =(ListView)findViewById(R.id.listOtherCinemas); 有用!但是在FragmentPdi中不行啊!!
答案 2 :(得分:0)
如果要在ListFragments中使用ListView,ListView必须具有id android:id="@+id/android:list
“!