0

好吧,我试图在片段中找到一个 ListView,以便能够通过创建它的 Main Activity 添加和删除项目。这是我的尝试(我基于 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 的 Main Activity 的代码 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 中获取' Fragments 视图,因为在此阶段 's 布局没有膨胀。使用's 更新它的.ActivityonCreate()FragmentFragmentonActivityCreated()ListView

请参阅从 Activity 的 onCreate 访问 Fragment View

于 2012-08-26T08:44:13.267 回答
0

我也遇到了这个问题。为了解决这个问题,我保留了对 Layout 而不是特定视图的引用。然后当我需要返回具体的View时候(即你调用的时候getListView()你必须检查对Layout的引用是否为null。如果是的话,膨胀它,设置它,然后找到你需要的视图并返回它。

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

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

于 2012-08-25T16:25:08.673 回答