এটি যেহেতু খুব ঘন ঘন জিজ্ঞাসিত প্রশ্ন, তাই আমি ভিউপ্যাজারকে একাধিক টুকরো এবং লেআউটগুলি বিশদভাবে ব্যাখ্যা করার জন্য সময় এবং প্রচেষ্টা করতে চাই। আপনি এখানে যান।
একাধিক টুকরো এবং লেআউট ফাইলের সাথে ভিউপেজার - কীভাবে
নীচে পৃথক খণ্ডের প্রকার এবং বিভিন্ন বিন্যাসের ফাইলগুলির সাথে একটি ভিউপাগার কীভাবে প্রয়োগ করা যায় তার সম্পূর্ণ উদাহরণ is
এই ক্ষেত্রে, আমার কাছে 3 টি টুকরো ক্লাস এবং প্রতিটি ক্লাসের জন্য আলাদা লেআউট ফাইল রয়েছে। জিনিসগুলি সহজ রাখার জন্য, খণ্ড-লেআউটগুলি কেবল তাদের পটভূমির রঙে পৃথক । অবশ্যই, খণ্ডগুলির জন্য যে কোনও লেআউট-ফাইল ব্যবহার করা যেতে পারে।
ফার্স্টফ্রেগমেন্ট.জভাতে কমলা ব্যাকগ্রাউন্ড লেআউট রয়েছে, সেকেন্ডফ্র্যাগমেন্ট.জভাতে সবুজ পটভূমি লেআউট এবং থার্ডফ্রেগমেন্ট.জভাতে একটি লাল রঙ রয়েছে ব্যাকগ্রাউন্ড লেআউট রয়েছে। তদ্ব্যতীত, প্রতিটি খণ্ডটি এটি কোন শ্রেণীর এবং কোন উদাহরণ থেকে তা নির্ভর করে আলাদা পাঠ্য প্রদর্শন করে।
এছাড়াও সচেতন থাকুন যে আমি সমর্থন-লাইব্রেরির টুকরোটি ব্যবহার করছি:
android.support.v4.app.Fraਮੈਂਟ
MainActivity.java (Viewpager সূচনা এবং ভিতরের শ্রেণী হিসেবে তার জন্য এডাপটার আছে)। আবার আমদানি দেখুন । আমি android.support.v4
প্যাকেজটি ব্যবহার করছি ।
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
}
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
switch(pos) {
case 0: return FirstFragment.newInstance("FirstFragment, Instance 1");
case 1: return SecondFragment.newInstance("SecondFragment, Instance 1");
case 2: return ThirdFragment.newInstance("ThirdFragment, Instance 1");
case 3: return ThirdFragment.newInstance("ThirdFragment, Instance 2");
case 4: return ThirdFragment.newInstance("ThirdFragment, Instance 3");
default: return ThirdFragment.newInstance("ThirdFragment, Default");
}
}
@Override
public int getCount() {
return 5;
}
}
}
কার্যকলাপ_মাইন.এক্সএমএল (মেইনএ্যাকটিভিটিজ। এক্সএমএল ফাইল) - একটি সাধারণ লেআউট ফাইল, কেবলমাত্র ভিউপ্যাজার ধারণ করে যা পুরো স্ক্রীনটি পূরণ করে।
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/viewPager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
টুকরো টুকরো ক্লাস, ফার্স্টফ্র্যাগমেন্ট.জভা
আমদানি android.support.v4.app.Fragment;
public class FirstFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.first_frag, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvFragFirst);
tv.setText(getArguments().getString("msg"));
return v;
}
public static FirstFragment newInstance(String text) {
FirstFragment f = new FirstFragment();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
return f;
}
}
first_frag.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_orange_dark" >
<TextView
android:id="@+id/tvFragFirst"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textSize="26dp"
android:text="TextView" />
</RelativeLayout>
SecondFragment.java
public class SecondFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.second_frag, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvFragSecond);
tv.setText(getArguments().getString("msg"));
return v;
}
public static SecondFragment newInstance(String text) {
SecondFragment f = new SecondFragment();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
return f;
}
}
second_frag.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_green_dark" >
<TextView
android:id="@+id/tvFragSecond"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textSize="26dp"
android:text="TextView" />
</RelativeLayout>
ThirdFragment.java
public class ThirdFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.third_frag, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvFragThird);
tv.setText(getArguments().getString("msg"));
return v;
}
public static ThirdFragment newInstance(String text) {
ThirdFragment f = new ThirdFragment();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
return f;
}
}
third_frag.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_red_light" >
<TextView
android:id="@+id/tvFragThird"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textSize="26dp"
android:text="TextView" />
</RelativeLayout>
শেষ ফলাফলটি নিম্নলিখিত:
ভিউপেজারে 5 টি টুকরো রয়েছে, খণ্ডগুলি 1 টাইপ ফার্স্টফ্র্যাগমেন্টের, এবং প্রথম_ফ্রেগ.এক্সএমএল লেআউট প্রদর্শন করে, খণ্ড 2 দ্বিতীয় প্রকারের ফ্রেঞ্চ এবং দ্বিতীয়_ফ্রেগ.এক্সএমএল প্রদর্শন করে, এবং খণ্ড 3-5 প্রকারের তৃতীয় ফ্রেম্যাগমেন্ট এবং সমস্ত তৃতীয়_ফ্র্যাগ.এক্সএমএল প্রদর্শন করে ।
উপরে আপনি 5 টি টুকরোটি দেখতে পাচ্ছেন যার মধ্যে বাম বা ডানদিকে সোয়াইপের মাধ্যমে পরিবর্তন করা যেতে পারে। অবশ্যই একই সময়ে কেবলমাত্র একটি টুকরা প্রদর্শিত হতে পারে।
সর্বশেষ তবে কম নয়:
আমি আপনাকে সুপারিশ করব যে আপনি আপনার প্রতিটি ফ্রেগমেন্ট ক্লাসে একটি খালি কনস্ট্রাক্টর ব্যবহার করুন ।
কনস্ট্রাক্টরের মাধ্যমে সম্ভাব্য পরামিতিগুলি হস্তান্তর করার পরিবর্তে এটি ব্যবহার করুন newInstance(...)
Bundle
হস্তান্তর করার জন্য পদ্ধতি এবং ।
এইভাবে যদি বিচ্ছিন্ন এবং পুনরায় সংযুক্ত করা হয় তবে বস্তুর স্থিতিটি আর্গুমেন্টের মাধ্যমে সংরক্ষণ করা যেতে পারে। অনেকটা Bundles
সংযুক্তির মতো Intents
।