অ্যান্ড্রয়েড টুকরাটির ব্যাকস্ট্যাকটি যেভাবে কাজ করছে বলে মনে হচ্ছে তাতে আমি একটি বিশাল সমস্যা পেয়েছি এবং যে কোনও সহায়তা দেওয়া হচ্ছে তার জন্য সবচেয়ে কৃতজ্ঞ হব।
কল্পনা করুন আপনার 3 টি টুকরা রয়েছে
[1] [2] [3]
আমি চাই যে ব্যবহারকারী নেভিগেট করতে সক্ষম হবে [1] > [2] > [3]
তবে ফেরার পথে (পিছনে বোতাম টিপছে) [3] > [1]
।
যেহেতু আমি কল্পনা করেছিলাম এটি এক্সএমএলে সংজ্ঞায়িত টুকরা হোল্ডারে addToBackStack(..)
খণ্ডিত [2]
করে এমন লেনদেন তৈরি করার সময় কল না করেই এটি সম্পন্ন হবে ।
এর বাস্তবতা দেখে মনে হচ্ছে যে যদি আমি [2]
ব্যবহারকারী যখন ব্যাকটি বোতাম টিপে টিপতে আবার উপস্থিত হতে চাই না, তখন [3]
অবশ্যই আমাকে addToBackStack
লেনদেনে কল করতে হবে না যাতে খণ্ডটি দেখায় [3]
। এটি সম্পূর্ণরূপে স্বজ্ঞাত বলে মনে হচ্ছে (সম্ভবত আইওএস ওয়ার্ল্ড থেকে আসছে)।
যাইহোক আমি যদি এটি এইভাবে করি তবে আমি যখন থেকে [1] > [2]
ফিরে ফিরে টিপব তখন [1]
প্রত্যাশার সাথে ফিরে আসি ।
যদি আমি যাই [1] > [2] > [3]
এবং তারপরে ফিরে টিপুন তবে আমি ফিরে আসি [1]
(প্রত্যাশার মতো) as এখন অদ্ভুত আচরণের ঘটে যখন আমি চেষ্টা ও জাম্প করতে [2]
থেকে আবার [1]
। সবার [3]
আগে সংক্ষিপ্তভাবে দৃশ্যমান হওয়ার আগে প্রদর্শিত হবে [2]
। আমি যদি এই মুহুর্তে ফিরে টিপুন তবে [3]
এটি প্রদর্শিত হবে এবং আমি আবার চাপ দিলে অ্যাপটি প্রস্থান করে।
এখানে কি চলছে তা বুঝতে কেউ আমাকে সহায়তা করতে পারেন?
এবং আমার মূল ক্রিয়াকলাপের জন্য এখানে লেআউট এক্সএমএল ফাইল রয়েছে:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<fragment
android:id="@+id/headerFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
class="com.fragment_test.FragmentControls" >
<!-- Preview: layout=@layout/details -->
</fragment>
<FrameLayout
android:id="@+id/detailFragment"
android:layout_width="match_parent"
android:layout_height="fill_parent"
/>
আপডেট এই কোডটি আমি এনএভি হেরেরচি দ্বারা তৈরি করতে ব্যবহার করছি
Fragment frag;
FragmentTransaction transaction;
//Create The first fragment [1], add it to the view, BUT Dont add the transaction to the backstack
frag = new Fragment1();
transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.detailFragment, frag);
transaction.commit();
//Create the second [2] fragment, add it to the view and add the transaction that replaces the first fragment to the backstack
frag = new Fragment2();
transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.detailFragment, frag);
transaction.addToBackStack(null);
transaction.commit();
//Create third fragment, Dont add this transaction to the backstack, because we dont want to go back to [2]
frag = new Fragment3();
transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.detailFragment, frag);
transaction.commit();
//END OF SETUP CODE-------------------------
//NOW:
//Press back once and then issue the following code:
frag = new Fragment2();
transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.detailFragment, frag);
transaction.addToBackStack(null);
transaction.commit();
//Now press back again and you end up at fragment [3] not [1]
অনেক ধন্যবাদ