好吧,我正在尝试在片段中找到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();
}
任何帮助将不胜感激,谢谢
答案 0 :(得分:1)
您无法在Fragment
的{{1}}中获得Activity
的观看次数,因为onCreate()
的布局在此阶段不会夸大。使用Fragment
的{{1}}更新Fragment
。
答案 1 :(得分:0)
我也遇到了这个问题。为了解决这个问题,我保留了对布局的引用,而不是特定的视图。然后当我需要返回特定的View
时(即当你调用getListView()
时,你必须检查对布局的引用是否为空。如果是,请给它充气,设置它,然后找到你的视图需要并将其归还。
然后在onCreateView()
方法中检查是否设置了布局。如果它只是返回,否则膨胀它并像现在一样设置它。
这样你就可以确保它只会膨胀一次,并且在你需要的时候总是膨胀