আমি একটি ছদ্মবেশী ক্রিয়াকলাপ লিখেছি যা দুটি টুকরোর মধ্যে পরিবর্তন করে। আপনি যখন ফ্র্যাগমেন্টএ থেকে ফ্রেগমেন্টবিতে যান, ফ্রেগমেন্টএ ব্যাক স্ট্যাকটিতে যুক্ত হয়। যাইহোক, আমি যখন ফ্র্যাগমেন্টএ এ ফিরে এসেছি (পিছনে টিপে), তখন একটি সম্পূর্ণ নতুন ফ্রেগমেন্টএ তৈরি হয় এবং যে রাষ্ট্রটি ছিল সেটি হারিয়ে যায়। আমি এই প্রশ্নের মতো একই জিনিসটির পরেও অনুভূতি পেয়েছি , তবে সমস্যাটি নির্মূল করার জন্য আমি একটি সম্পূর্ণ কোড নমুনা অন্তর্ভুক্ত করেছি:
public class FooActivity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(android.R.id.content, new FragmentA());
transaction.commit();
}
public void nextFragment() {
final FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(android.R.id.content, new FragmentB());
transaction.addToBackStack(null);
transaction.commit();
}
public static class FragmentA extends Fragment {
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View main = inflater.inflate(R.layout.main, container, false);
main.findViewById(R.id.next_fragment_button).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
((FooActivity) getActivity()).nextFragment();
}
});
return main;
}
@Override public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Save some state!
}
}
public static class FragmentB extends Fragment {
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.b, container, false);
}
}
}
কিছু লগ বার্তা যুক্ত করা সহ:
07-05 14:28:59.722 D/OMG ( 1260): FooActivity.onCreate
07-05 14:28:59.742 D/OMG ( 1260): FragmentA.onCreateView
07-05 14:28:59.742 D/OMG ( 1260): FooActivity.onResume
<Tap Button on FragmentA>
07-05 14:29:12.842 D/OMG ( 1260): FooActivity.nextFragment
07-05 14:29:12.852 D/OMG ( 1260): FragmentB.onCreateView
<Tap 'Back'>
07-05 14:29:16.792 D/OMG ( 1260): FragmentA.onCreateView
এটি কখনই ফ্রেগমেন্টএ.অনসেভআইনস্ট্যান্স স্টেটকে কল করে না এবং আপনি পিছনে আঘাত করলে এটি একটি নতুন ফ্রেগমেন্টএ তৈরি করে। তবে, আমি যদি ফ্র্যাগমেন্টএ এ থাকি এবং আমি স্ক্রিনটি লক করি তবে ফ্রেগমেন্টএ.অনস্যাভআইভান্সস্ট্যান্সেট কল হবে না। এত অদ্ভুত ... আমি পুনরায় তৈরির প্রয়োজন নেই এমন ব্যাক স্ট্যাকের সাথে কোনও টুকরো যোগ করার আশা করা কি ভুল? ডক্স যা বলে তা এখানে :
অন্যদিকে, যদি কোনও খণ্ড অপসারণের সময় আপনি যদি addToBackStack () কল করেন তবে খণ্ডটি বন্ধ হয়ে গেছে এবং যদি ব্যবহারকারী ফিরে যান তবে পুনরায় শুরু হবে।
ListView
। কোনও স্ক্রোল শ্রোতাকে সংযুক্ত করতে এবং একটি উদাহরণ ভেরিয়েবল আপডেট করার জন্য অনেক বেশি হুপ-জাম্পিংয়ের মতো মনে হচ্ছে।