1

私のアプリケーションでは、タブ ナビゲーションで 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 で、次のように入力するためのリストビューを見つけたい:

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

....

しかし、私は持っていますNullPointerException

どうして??

他のフラグメント (FragmentFilm と FragmentCinema) には、この問題のない textview のような他のビューがあります!!

私を助けてください!ありがとうございました。

PSこれはフラグメントのビューを動的に設定する正しい方法ですか、それともフラグメントクラスでビューを設定する必要がありますか?? 2番目の場合、どのように変数をアクティビティからフラグメントに渡すことができますか??

4

3 に答える 3

0

わかりましたが、この xml がある FragmentCinema という別のフラグメントがある理由がわかりません。

<?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 final ListView cinemasOther = (ListView)findViewById(R.id.listOtherCinemas); を使用すると、できます!しかし FragmentPdi では動作しません!!

于 2012-10-09T18:27:11.490 に答える
0

レイアウト ファイルにリストビューしかない場合は、わざわざ oncreateview をオーバーライドしないでください。デフォルトのレイアウトで十分です。次に、ListFragment に組み込まれたメソッド (getListView() や setListAdapter() など) を使用できます。

于 2012-10-08T23:25:52.163 に答える
0

ListFragments で ListView を使用する場合は、ListView に id android:id="@+id/android:list"!

于 2013-01-30T15:18:42.740 に答える