আমি একটি ViewPager
ব্যবহার করে ফ্র্যাগমেন্ট ব্যবহার করার চেষ্টা করছি FragmentPagerAdapter
। আমি যেটি অর্জন করতে চাইছি তা হ'ল একটি খণ্ডকে প্রতিস্থাপন করা, এর প্রথম পৃষ্ঠায় অবস্থিত ViewPager
, অন্য একটি দিয়ে।
পেজার দুটি পৃষ্ঠার সমন্বয়ে গঠিত। প্রথমটি হ'ল FirstPagerFragment
, দ্বিতীয়টি হ'ল SecondPagerFragment
। প্রথম পৃষ্ঠার একটি বোতামে ক্লিক করা। আমি FirstPagerFragment
নেক্সটফ্রেগমেন্টের সাথে প্রতিস্থাপন করতে চাই ।
নীচে আমার কোড আছে।
public class FragmentPagerActivity extends FragmentActivity {
static final int NUM_ITEMS = 2;
MyAdapter mAdapter;
ViewPager mPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_pager);
mAdapter = new MyAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
}
/**
* Pager Adapter
*/
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
if(position == 0) {
return FirstPageFragment.newInstance();
} else {
return SecondPageFragment.newInstance();
}
}
}
/**
* Second Page FRAGMENT
*/
public static class SecondPageFragment extends Fragment {
public static SecondPageFragment newInstance() {
SecondPageFragment f = new SecondPageFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Log.d("DEBUG", "onCreateView");
return inflater.inflate(R.layout.second, container, false);
}
}
/**
* FIRST PAGE FRAGMENT
*/
public static class FirstPageFragment extends Fragment {
Button button;
public static FirstPageFragment newInstance() {
FirstPageFragment f = new FirstPageFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Log.d("DEBUG", "onCreateView");
View root = inflater.inflate(R.layout.first, container, false);
button = (Button) root.findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction trans = getFragmentManager().beginTransaction();
trans.replace(R.id.first_fragment_root_id, NextFragment.newInstance());
trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
trans.addToBackStack(null);
trans.commit();
}
});
return root;
}
/**
* Next Page FRAGMENT in the First Page
*/
public static class NextFragment extends Fragment {
public static NextFragment newInstance() {
NextFragment f = new NextFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Log.d("DEBUG", "onCreateView");
return inflater.inflate(R.layout.next, container, false);
}
}
}
... এবং এখানে এক্সএমএল ফাইল রয়েছে
fragment_pager.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:padding="4dip"
android:gravity="center_horizontal"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
</android.support.v4.view.ViewPager>
</LinearLayout>
first.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/first_fragment_root_id"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button android:id="@+id/button"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="to next"/>
</LinearLayout>
এখন সমস্যা ... আমার কোন আইডি ব্যবহার করা উচিত?
trans.replace(R.id.first_fragment_root_id, NextFragment.newInstance());
?
যদি আমি ব্যবহার করি R.id.first_fragment_root_id
তবে প্রতিস্থাপনটি কাজ করে তবে হাইয়ারাকির ভিউয়ার নীচের মত একটি অদ্ভুত আচরণ দেখায়।
শুরুতেই অবস্থাটা এমন
প্রতিস্থাপনের পরে পরিস্থিতি হচ্ছে
আপনি দেখতে পাচ্ছেন যে এখানে কিছু ভুল আছে, আমি টুকরোটি প্রতিস্থাপনের পরে প্রথম চিত্রের মতো দেখানো একই অবস্থাটি আশা করব।