在片段中查找ListView?

时间:2012-08-25 15:47:00

标签: android android-widget

好吧,我正在尝试在片段中找到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>

这是我想要访问listview的主要活动的代码,以便能够修改 公共类ContactListActivity扩展了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();



}

任何帮助将不胜感激,谢谢

2 个答案:

答案 0 :(得分:1)

您无法在Fragment的{​​{1}}中获得Activity的观看次数,因为onCreate()的布局在此阶段不会夸大。使用Fragment的{​​{1}}更新Fragment

请参阅Access Fragment View from Activity's onCreate

答案 1 :(得分:0)

我也遇到了这个问题。为了解决这个问题,我保留了对布局的引用,而不是特定的视图。然后当我需要返回特定的View时(即当你调用getListView()时,你必须检查对布局的引用是否为空。如果是,请给它充气,设置它,然后找到你的视图需要并将其归还。

然后在onCreateView()方法中检查是否设置了布局。如果它只是返回,否则膨胀它并像现在一样设置它。

这样你就可以确保它只会膨胀一次,并且在你需要的时候总是膨胀