Saya memiliki antarmuka fragmen dengan tab di sepanjang bagian bawah yang membuka fragmen berbeda di tampilan utama.
Saya memiliki satu fragmen tertentu yang merupakan daftar item. Jika pengguna memilih salah satu item dalam daftar ini, fragmen lain terbuka yang berisi viewpager yang menggulir secara horizontal di antara semua item dalam daftar di fragmen sebelumnya. Ini bekerja dengan baik.
Viewpager menggunakan FragmentPagerAdapter untuk menampilkan item.
Masalahnya muncul saat pengguna memilih item dalam daftar, melihatnya, lalu menekan tombol pada bilah tab untuk kembali ke daftar, lalu memilih item lain. Kedua kalinya item dipilih, layar kosong muncul sebagai ganti viewpager. Saya tidak menerima kesalahan dalam LogCat saya saat ini terjadi.
Mengapa viewpager hanya muncul pertama kali?
FragmentPagerAdapter:
public class ViewPagerAdapter extends FragmentPagerAdapter {
Cursor mCursor;
public ViewPagerAdapter(FragmentManager fm, Cursor c) {
super(fm);
mCursor = c;
}
public void changeCursor(Cursor c) {
mCursor = c;
this.notifyDataSetChanged();
}
@Override
public int getCount() {
if (mCursor == null) return 0;
else return mCursor.getCount();
}
@Override
public Fragment getItem(int position) {
mCursor.moveToPosition(position);
return TeamCardFragment.newInstance(mCursor, position);
}
}
PagerFragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle bundle = getArguments();
mCursorPosition = bundle.getInt(TeamCardCommon.BUNDLE_KEY_CURSOR_POSITION);
View mView = inflater.inflate(R.layout.team_card_master, container, false);
mViewPager = (ViewPager)mView.findViewById(R.id.team_card_master_view_pager);
mAdapter = new ViewPagerAdapter(getFragmentManager(), cursor);
new setAdapterTask().execute();
return mView;
}
private class setAdapterTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void result) {
mViewPager.setAdapter(mAdapter);
mViewPager.setCurrentItem(mCursorPosition);
}
}