اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته 

انا استخدم  ازار Bottom Navigation Bar في الصفحة الاساسيه لمشروعي 

لدي 3 ازار وكل زر مرتبط ب صفحة Fragment  من خلال صفحة الادبتر التاليه :

public class PageAdapter extends FragmentPagerAdapter {

    private int numOfTabs;

    PageAdapter(FragmentManager fm, int numOfTabs) {
        super(fm);
        this.numOfTabs = numOfTabs;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new FragmentHome();
            case 1:
                return new StatusFragment();
            case 2:
                return new CallFragment();
            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        return numOfTabs;
    }
}

 

 

 الان لدي مشكلة انا احتاج ان انتقال من خلال الزر الى صفحة activity وليس Fragment 

كل ما حاولت اكتب الكود الانتقال تظهر لي رسالة الخطاء التالي  :

159112388176511.png

في هذا الحالة كيف ممكن نعمل انتقال الى هذا الاكتفتي ؟هل يوجد حل بدون تحويل الاكتفتي الى صفحة Fregment?

Recommended Posts

  • 0
نشر

السلام عليكم أخي @مروان مروان3

الأمر بسيط :) ,يمكنك ذلك هكذا 

 

Intent i = new Intent(getActivity(), Home.class);
    startActivity(i);
    ((Activity) getActivity()).overridePendingTransition(0, 0);

أو عمل فنكشن وإستدعائها  مثال 

private void moveToNewActivity () {

    Intent i = new Intent(getActivity(), Home.class);
    startActivity(i);
    ((Activity) getActivity()).overridePendingTransition(0, 0);

}

 

  • 0
نشر

@Mohamd Imran

ايضا لا يمكن عمل ذلك 

 

15911298479121.png

 

 

 

public class PageAdapter extends FragmentPagerAdapter {

    private int numOfTabs;

    PageAdapter(FragmentManager fm, int numOfTabs) {
        super(fm);
        this.numOfTabs = numOfTabs;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new MHome();
            case 1:

                Intent i = new Intent(getActivity(), Home.class);
                startActivity(i);
                ((Activity) getActivity()).overridePendingTransition(0, 0);

               // return new StatusFragment();
               // startActivity(new Intent(PageAdapter.this, Home.class));
             //   return null ;

            case 2:
                return new CallFragment();
            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        return numOfTabs;
    }
}

 

  • 1
نشر

@مروان مروان3 

لم أنتنبه إلى الكلاس الخاص بك هنا 

extends FragmentPagerAdapter

أعتقدت إنها تستخدم activity على كل حال لحل المشكلة

new Intent()

يتطلب context وليس Activity ,نقوم بتمرير الcontext إلى الPageAdapter هكذا 

 

 PageAdapter(Context context,FragmentManager fm, int numOfTabs) {
        super(fm);
   	this.mContext = context;
        this.numOfTabs = numOfTabs;
    }

ونقوم بإستخدام ال context في  ال intent هكذا 

Intent intent = new Intent(this.mContext, Home.class);

 

 

  • 0
نشر

@Mohamd Imran

 

اصبح الكود الصفحة كالتالي 

public class PageAdapter extends FragmentPagerAdapter {
    private static Context mContext;
    private int numOfTabs;
    PageAdapter(Context context, FragmentManager fm, int numOfTabs) {
        super(fm);
        this.mContext = context;
        this.numOfTabs = numOfTabs;
    }



   
    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new MHome();
            case 1:
                Intent intent = new Intent(this.mContext, Home.class);
           
          mContext. startActivity(intent);
  

            case 2:
                return new CallFragment();
            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        return numOfTabs;
    }
}

ولكن في الصفحة الاساسيه ظهر خطاء في السطر التالي 

pageAdapter = new PageAdapter(getSupportFragmentManager(), tabLayout.getTabCount());

الخطاء هو 

'PageAdapter(android.content.Context, androidx.fragment.app.FragmentManager, int)' in 'com.example.myapplication.MainTable.PageAdapter' cannot be applied to '(androidx.fragment.app.FragmentManager, int)'

بتحديد في كلمة getSupportFragmentManager()

  • 0
نشر
بتاريخ منذ ساعة مضت قال مروان مروان3:

بتحديد في كلمة getSupportFragmentManager()

سبب الخطأ في إننا أضفنا context ل PageAdapter لكن في الصفحة الأخرى التي يظهر فيها الخطأ لم نمرر ال context هناك بما إننا نستخدم ال pageadapter هناك أيضا ,لحل المشكلة قم بتمرير الcontext في الصفحة التي يظهر فيها الخطأ هكذا 

pageAdapter = new PageAdapter(mContext,getSupportFragmentManager(), tabLayout.getTabCount());

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...