আমার নীচে বরাবর ট্যাবগুলি সহ একটি টুকরো ইন্টারফেস রয়েছে যা মূল দৃশ্যে বিভিন্ন টুকরো টুকরো করে।
আমার কাছে একটি নির্দিষ্ট খণ্ড রয়েছে যা আইটেমের একটি তালিকা। যদি ব্যবহারকারী এই তালিকার একটি আইটেম নির্বাচন করেন, অন্য একটি খণ্ড খোলার মধ্যে একটি ভিউপেজার রয়েছে যা পূর্ববর্তী খণ্ডের তালিকার সমস্ত আইটেমের মধ্যে অনুভূমিকভাবে স্ক্রোল করে। এটি দুর্দান্ত কাজ করে।
আইটেমগুলি প্রদর্শন করতে ভিউপ্যাজার একটি ফ্র্যাগমেন্টপেজার অ্যাডাপ্টার ব্যবহার করে।
সমস্যাটি তখন উপস্থিত হয় যখন ব্যবহারকারী তালিকার কোনও আইটেম নির্বাচন করেন, এটি দেখুন, তারপরে তালিকায় ফিরে যেতে ট্যাব বারের বোতামটি টিপুন, তারপরে অন্য আইটেমটি নির্বাচন করুন। দ্বিতীয় বার কোনও আইটেমটি নির্বাচিত হলে ভিউপ্যাজারের পরিবর্তে একটি ফাঁকা স্ক্রিন উপস্থিত হয়। যখন এটি ঘটে তখন আমি আমার লগকেটে কোনও ত্রুটি পাই না।
কেন ভিউপ্যাজারটি কেবল প্রথমবার উপস্থিত হবে?
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);
}
}