استخدام setSupportActionBar و setContentView في Fragment
لديك بعض المشاكل في فهم كيفية استخدام setSupportActionBar
و setContentView
في Fragment
. دعني أوضح لك كيفية القيام بذلك:
-
استخدام
setContentView
فيFragment
:Fragment
ليس لهاsetContentView
مثلActivity
. بدلاً من ذلك، يتم استخدامonCreateView
لتهيئة وإعادة استخدام واجهة المستخدم الخاصة بالـFragment
. يمكنك استخدامها لإعادة إنشاءView
الخاصة بالـFragment
وتعيينها كمحتوى للـFragment
.مقالات ذات صلة -
استخدام
setSupportActionBar
فيFragment
: يمكنك استخدامsetSupportActionBar
إذا كان لديك نشاط (Activity
) يحتوي علىToolbar
وتريد استخدامها في الـFragment
. لكن، تحتاج إلى الحصول علىActionBar
من النشاط الخاص بالـFragment
وتعيينToolbar
كـActionBar
الحالي.
هنا كيف يمكنك تعديل كودك لتحقيق ذلك:
javapublic class StudentrFragment extends Fragment {
Toolbar toolbar;
TabLayout tabLayout;
ViewPager viewPager;
ViewPagerAdapter viewPagerAdapter;
public StudentrFragment() {
// Required empty public constructor
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tabbar_layout, container, false);
toolbar = (Toolbar) rootView.findViewById(R.id.toolbar);
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
tabLayout = (TabLayout) rootView.findViewById(R.id.tabLayout);
viewPager = (ViewPager) rootView.findViewById(R.id.viewPager);
viewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());
viewPagerAdapter.addFragments(new CivilFragment(),"Civil Dept");
viewPagerAdapter.addFragments(new ComputerFragment(),"CSE Dept");
viewPagerAdapter.addFragments(new EeeFragment(),"EEE Dept");
viewPagerAdapter.addFragments(new EceFragment(),"ECE Dept");
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
return rootView;
}
}
في هذا الكود، قمنا بتحرير onCreateView
بحيث يعيد View
الذي سيتم عرضه في الـ Fragment
، ونقوم بتهيئة Toolbar
واستخدام setSupportActionBar
لجعلها تعمل كـ ActionBar
للنشاط الخاص بالـ Fragment
.
أتمنى أن يساعدك هذا الحل! إذا كنت بحاجة إلى مزيد من التوضيح، فلا تتردد في طرح المزيد من الأسئلة.
المزيد من المعلومات
بالطبع! لنوسع قليلاً على المعلومات المتعلقة بـ setSupportActionBar
و setContentView
في Fragment
:
-
setSupportActionBar
: هذه الوظيفة تأتي من مكتبة دعم التصميم (Design Support Library) وتستخدم لتعيينToolbar
كـActionBar
للنشاط (Activity
). يمكن أن تكون هذه مفيدة إذا كنت تستخدمToolbar
فيFragment
وتريد أن تظهر كـActionBar
في النشاط. يجب أن يكون لديك نشاط يمتلكToolbar
في ملف الـ XML للواجهة الخاصة بالنشاط. -
setContentView
: هذه الوظيفة تأتي من النشاط (Activity
) وتستخدم لتعيين المحتوى الذي يجب عرضه في النشاط. لكن فيFragment
، يتم استخدامonCreateView
بدلاً منsetContentView
لإعادة تهيئة واجهة المستخدم الخاصة بالـFragment
.
في كودك الأصلي، قمت باستخدام setContentView
في onCreate
، وهو مخصص للنشاط وليس للـ Fragment
. بالإضافة إلى ذلك، قمت باستخدام getSupportFragmentManager()
في مكان يجب استخدام getChildFragmentManager()
لأنك داخل Fragment
.
هل هذه المعلومات مفيدة؟ هل تحتاج إلى مزيد من التوضيح أو المعلومات؟