2012-10-08 15 views
1

的片段查看我使用SherlockActionBar進行標籤導航。 在活動MyFragmentActivity延伸SherlockFragmentActivity我添加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我想要以這種方式找到列表視圖來填充它:

final ListView elencoPlaces = (ListView)findViewById(R.id.list_places); 

....

但我有NullPointerException

爲什麼?

在另一個片段(FragmentFilm和FragmentCinema)我有其他的看法像textview沒有這個 問題!

請幫幫我! 謝謝。

P.S.這是用於填充片段中視圖的正確方法,還是必須填充片段類中的視圖?如果第二我如何可以從活動傳遞到片段?

回答

0

如果你在佈局文件中只有一個列表視圖,不要打擾覆蓋oncreateview。默認佈局會給你很多。那麼你可以使用ListFragment內置的方法 - 比如getListView()和setListAdapter()。

+0

你好感謝你的答案。很抱歉,但我不明白,我必須FragmentPdi改用片段的Lis​​tFragment! ?請你解釋一下如何使用一個例子!?謝謝。 – user1437101

+0

只需要用FragmentPdi擴展SherlockListFragment而不是SherlockFragment。刪除你的onCreateView方法。當你需要獲取listview時,調用FragmentPdi上的getListView()。 – toadzky

+0

好的,謝謝,但我需要在MyFragmentActivity中獲得一個列表視圖。我怎樣才能在這個活動中得到它? – user1437101

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不工作!

0

如果你想使用ListFragments ListView控件,您的ListView必須要有ID 「!

+0

你可能要考慮擴大這個答案,以提高其有用性 – theheadofabroom

相關問題