0

さて、私はそれを作成したメイン アクティビティを介してアイテムを追加および削除できるように、フラグメント内の ListView を見つけようとしています。これが私の試みです(com.viewpagerindicator.sampleに基づいています)が、最後にmainListViewにアクセスしようとするとクラッシュします。

public final class ContactListFragment extends Fragment {
    private ListView MyListView;

    public ListView GetListView()
    {
        return MyListView;
    }


    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        LinearLayout theLayout = (LinearLayout) inflater.inflate(R.layout.tab_frag, container, false);
        MyListView = (ListView)theLayout.findViewById(R.id.listViewx);
        MyListView.setAdapter(adapter);     
        return theLayout;
    }
}

これがレイアウトです

    <ListView
        android:id="@+id/listViewx"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" >
    </ListView>

</LinearLayout>

それは、リストビューにアクセスして public class ContactListActivity extends BaseSampleActivity {

@Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_tabs);


    List<Fragment> fragments = new Vector<Fragment>();

    fragments.add(Fragment.instantiate(this, ContactListFragment.class.getName()));
    fragments.add(Fragment.instantiate(this, ContactListFragment.class.getName()));
    fragments.add(Fragment.instantiate(this, ContactListFragment.class.getName()));


    PagerAdapter mAdapter = new PagerAdapter(getSupportFragmentManager(), fragments);


    ViewPager mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);

    TabPageIndicator mIndicator = (TabPageIndicator) findViewById(R.id.indicator);
    mIndicator.setViewPager(mPager);

    ContactListFragment XCLF = (ContactListFragment) fragments.get(1);
    ListView mainListView = (ListView) XCLF.GetListView();



}

助けていただければ幸いです、ありがとう

4

2 に答える 2

1

この段階では'sレイアウトが拡張されていないため、'sで' Fragmentsビューを取得することはできません。を使用して更新します 。ActivityonCreate()FragmentFragmentonActivityCreated()ListView

アクティビティのonCreateからのアクセスフラグメントビューを参照してください

于 2012-08-26T08:44:13.267 に答える
0

私もこの問題に遭遇しました。それを改善するために、特定のビューではなくレイアウトへの参照を保持します。次に、特定のものを返す必要があるView場合 (つまり、呼び出すときgetListView()に、レイアウトへの参照が null であるかどうかを確認する必要があります。そうであれば、それを膨らませて設定し、必要なビューを見つけて返します。

次に、onCreateView()メソッドでレイアウトが設定されているかどうかを確認します。単純にそれを返す場合は、それを膨らませて、現在のように設定します。

このようにして、一度だけ膨らませ、必要なときに常に膨らませます。

于 2012-08-25T16:25:08.673 に答える