Sri*_*har 24 android android-pageradapter
在我的应用程序中,我使用了ViewPager.喜欢,
(say main.xml)
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/register_header" />
Run Code Online (Sandbox Code Playgroud)
并在FragmentActivity中创建ViewPager对象和ViewPagerAdapter(它扩展了FragmentPagerAdapter)对象.
_mViewPager = (ViewPager) findViewById(R.id.viewPager);
_adapter = new ViewPagerAdapter(getApplicationContext(),
getSupportFragmentManager());
_mViewPager.setAdapter(_adapter);
Run Code Online (Sandbox Code Playgroud)
而Adapter类就像,
public class ViewPagerAdapter extends FragmentPagerAdapter {
private Context _context;
private FragmentManager manager;
private Fragment f;
private String classname="ViewPagerAdapter";
public ViewPagerAdapter(Context context, FragmentManager fm) {
super(fm);
_context=context;
manager=fm;
}
@Override
public Fragment getItem(int position) {
Log.i(classname,"getItem called"+position);
f = new Fragment();
f=MyFragment.newInstance();
Bundle args = new Bundle();
args.putInt("position", position);
f.setArguments(args);
return f;
}
@Override
public int getCount() {
return User.getPageCount();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
Run Code Online (Sandbox Code Playgroud)
在MyFragment Class中,
在onResume中,我必须将wigets对象存储到公共静态变量中.
public void onResume() {
super.onResume();
pageIndex = getArguments().getInt("position");
User.useTextview1=textview1;
User.useTextview2= textview2;
User.current_pageIndex=pageIndex;
}
Run Code Online (Sandbox Code Playgroud)
我必须更新从FragmentActivity中的User类获取的textviews. 我的问题是getItem()方法在第一次调用时被调用两次 实际上,模拟器中显示的视图是第0个索引,但在FragmentActivity中获得了第一个索引值.如果我第二次停止调用getItem()方法,我可以在FragmentActivity中获得第0个索引TextView引用.
请告诉我最好的方法.
谢谢
Nik*_*iko 18
该FragmentPagerAdapter
实例化2 Fragments
上启动,索引0和索引1.如果你想获得的数据来自Fragment
其在屏幕上,你可以使用setOnPageChangeListener
的Pager
获得当前位置.然后SparseArray
跟WeakReference
你的碎片有关.在getItem
调用中更新该数组.当onPageSelected
被调用时使用该位置来获取权限Fragment
并更新User
数据.
数组的初始化:
private SparseArray<WeakReference<MyFragment>> mFragments = new SparseArray<WeakReference<MyFragment>>(3);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15046 次 |
最近记录: |