আমি অ্যান্ড্রয়েডে v4 সামঞ্জস্যতা ভিউপেজার ব্যবহার করছি। আমার ফ্র্যাগমেন্টএকটিভিটির একটি গুচ্ছ ডেটা রয়েছে যা আমার ভিউপিজারে বিভিন্ন পৃষ্ঠায় বিভিন্ন উপায়ে প্রদর্শিত হবে। এখনও অবধি আমার কাছে একই লিস্টফ্র্যাগমেন্টের মাত্র 3 টি উদাহরণ রয়েছে, তবে ভবিষ্যতে আমার কাছে বিভিন্ন তালিকাগুলির 3 টি উদাহরণ থাকবে। ভিউপ্যাজারটি একটি উল্লম্ব ফোনের স্ক্রিনে রয়েছে, তালিকাগুলি পাশাপাশি থাকা নয়।
এখন লিস্টফ্র্যাগমেন্টের একটি বোতাম একটি পৃথক পূর্ণ পৃষ্ঠা ক্রিয়াকলাপ শুরু করে (ফ্রেগমেন্টএকটিভিটির মাধ্যমে), যা ফেরত দেয় এবং ফ্রেগমেন্টএক্টিভিটি ডেটা পরিবর্তন করে, সংরক্ষণ করে, তারপরে তার ভিউপাগারে সমস্ত দর্শন আপডেট করার চেষ্টা করে। এখানেই আমি আটকা পড়েছি।
public class ProgressMainActivity extends FragmentActivity
{
MyAdapter mAdapter;
ViewPager mPager;
@Override
public void onCreate(Bundle savedInstanceState)
{
...
mAdapter = new MyAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.viewpager);
mPager.setAdapter(mAdapter);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
...
updateFragments();
...
}
public void updateFragments()
{
//Attempt 1:
//mAdapter.notifyDataSetChanged();
//mPager.setAdapter(mAdapter);
//Attempt 2:
//HomeListFragment fragment = (HomeListFragment) getSupportFragmentManager().findFragmentById(mAdapter.fragId[0]);
//fragment.updateDisplay();
}
public static class MyAdapter extends FragmentPagerAdapter implements
TitleProvider
{
int[] fragId = {0,0,0,0,0};
public MyAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public String getTitle(int position){
return titles[position];
}
@Override
public int getCount(){
return titles.length;
}
@Override
public Fragment getItem(int position)
{
Fragment frag = HomeListFragment.newInstance(position);
//Attempt 2:
//fragId[position] = frag.getId();
return frag;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE; //To make notifyDataSetChanged() do something
}
}
public class HomeListFragment extends ListFragment
{
...
public static HomeListFragment newInstance(int num)
{
HomeListFragment f = new HomeListFragment();
...
return f;
}
...
এখন আপনি দেখতে পাচ্ছেন, আমার প্রথম প্রয়াসটি পুরো ফ্রেগমেন্টপেজার অ্যাডাপ্টারে ডেটাসেট চেঞ্জ করা ছিল এবং এটি কখনও কখনও ডেটা আপডেট করার বিষয়টি দেখিয়েছিল, তবে অন্যদের কাছে আমি একটি অবৈধ স্টেট এক্সেপশন পেয়েছি: onSaveInstanceState এর পরে এই ক্রিয়াটি সম্পাদন করতে পারবেন না।
আমার দ্বিতীয় প্রয়াসটি আমার লিস্টফ্র্যাগমেন্টে একটি আপডেট ফাংশন কল করার চেষ্টা করে, তবে getId এ আইটেমটি ফিরে আসে 0 আমি যে ডক দ্বারা চেষ্টা করেছি সে অনুসারে
ফ্রেগমেন্টম্যানেজারের কাছ থেকে ফ্রেগমেন্টবিয়ানআইডি () বা ফাইন্ডফ্রেগমেন্টবাইট্যাগ () ব্যবহার করে ফ্রেগমেন্টের রেফারেন্স অর্জন করা
তবে আমি আমার খণ্ডগুলির ট্যাগ বা আইডি জানি না! আমার কাছে একটি অ্যান্ড্রয়েড রয়েছে: ভিউপ্যাজারের জন্য আইডি = "@ + আইডি / ভিউপ্যাজার" এবং একটি অ্যান্ড্রয়েড: আইডি = "@ অ্যান্ড্রয়েড: আইডি / তালিকা" আমার তালিকাভুক্তির জন্য তালিকাফ্র্যাগমেন্ট লেআউটে, তবে আমি মনে করি এগুলি দরকারী কিনা।
সুতরাং, আমি কীভাবে পারি: ক) একযোগে পুরো ভিউপিজারকে নিরাপদে আপডেট করুন (আদর্শভাবে ব্যবহারকারীকে তার আগে যে পৃষ্ঠায় ছিলেন সেটিতে ফিরিয়ে দেওয়া) - ব্যবহারকারীটির দৃষ্টিভঙ্গি দেখতে এটি ঠিক আছে। অথবা পছন্দসইভাবে, খ) তালিকাভুক্তিকে ম্যানুয়ালি আপডেট করতে প্রতিটি ক্ষতিগ্রস্থ তালিকাফ্র্যাগমেন্টে একটি ফাংশন কল করুন।
কোন সাহায্য কৃতজ্ঞভাবে গৃহীত হবে!
null
টুকরা জন্য পেতে ।