我是在Android中使用ViewPagers
和Fragments
的新手。我的应用程序的初始活动有一个ListView
然后转到另一个活动,该活动基本上是基于从inital ListView
传递的ID过滤ListView
。我希望用户能够在不同的过滤ListViews
之间滑动。这可能是我的普遍缺乏理解,但我有ViewPager
功能工作正常,但是当我点击过滤ListView
中的项目时,我收到一个错误,因为我有一个值作为成员变量存储的集合我使用ViewPager
时,我在整个课程中都提到了该集合,并且该集合始终是空的。ViewPager数据保留
此代码我到目前为止:
ListingFragment.class:
public class ListingFragment extends SherlockFragmentActivity
{
private ViewPager mViewPager;
private MyFragmentPagerAdapter mMyFragmentPagerAdapter;
private static List<Fragment> fragments;
@Override
public void onCreate(final Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
mViewPager = (ViewPager)findViewById(R.id.viewpager);
mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mMyFragmentPagerAdapter);
DetailsFragment df1 = DetailsFragment.newInstance(1);
fragments.add(df1);
DetailsFragment df2 = DetailsFragment.newInstance(2);
fragments.add(df2);
}
private static class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
return fragments.get(index);
}
@Override
public int getCount() {
return 2;
}
}
}
DetailsFragment.class
public class DetailsFragment extends SherlockFragmentActivity
{
private int detailId;
private static List<Integer> items;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(final Bundle icicle)
{
super.onActivityCreated(icicle);
}
public static DetailsFragment newInstance(int id) {
DetailsFragment lf = new DetailsFragment();
Bundle bundle = new Bundle();
bundle.putInt("id", id);
lf.setArguments(bundle);
return lf;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.listing, container, false);
detailId = getArguments().getInt("id");
items = GetItems();
return view;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id)
{
super.onListItemClick(l, v, position, id);
final Integer item = items.get(pos); //this is always empty
}
}
我想我已经指出了这个问题。错误的ID正在被传入。看起来,当我滚动时,而不是传入的ID,它应该在应该在的位置之前。所以,在我的例子中,当我滚动到应该通过id 1的片段时,是否传入了2。上面的'ListingFragment.class'中的任何内容都表示可能导致什么? –
@KrisB不,我没有看到明显的东西(是你使用的真实代码)。你确定你没有在'ViewPager'中看到错误的片段('ViewPager'应该从0开始(ID为1),并有另一个片段用ID 2刷入)? – Luksprog
是的,我要开始一个新的问题,因为我有额外的代码,但我不想继续添加到这个。 –