رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

افزودن و حذف فرگمنت در viewpager


پست های پیشنهاد شده

با سلام

در طراحی یک viewpager با چند فرگمنت که قابلیت افزودن فرگمنت و حذف آنها بصورت داینامیک باشه به مشکل بر خوردم

همه کد ها بخوبی کار میکنند بجز کد مربوط به حذف فرگمنت

البته اگر از آخرین فرگمنت شروع به حذف فرگمنت ها کنیم مشکلی پیش نمیاد

ولی اگه مثلا 5 فرگمنت داشته باشیم و بخواهیم فرگمنت شماره 2 را حذف کنیم ، فرگمنت حذف می شود ولی جای فرگمت خالی می ماند و با سوئیپ روی این فرگمنت برنامه به مشکل میخوره

در عکس پیوست فرگمنت دو حذف شده ولی جای خالی آن باقی مانده

کدی که برای حذف فرگمنت استفاده کردم به شکل زیر هست


        public void removeFrag(int position) {
            removeTab(position);
            Fragment fragment = mFragmentList.get(position);
            viewPager.removeView(fragment.getView());
            mFragmentList.remove(fragment);
            mFragmentTitleList.remove(position);
     
            notifyDataSetChanged();
            getSupportFragmentManager().beginTransaction().remove(fragment).commit();
            getSupportFragmentManager().beginTransaction().detach(fragment).commit();
        }

ممنون میشم هر چه زودتر در این مورد راهنماییم کنید

با تشکر از سایت خوبتون

frag.png

لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

 

class ViewPagerAdapter extends FragmentPagerAdapter {

    private FragmentManager mManager;
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
        this.mManager = manager;
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFrag(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
        notifyDataSetChanged();
    }

    public void removeFragment(int position) {
        mFragmentTitleList.remove(position);
        mManager.beginTransaction().remove(mFragmentList.get(position)).commit();
        mFragmentList.remove(position);
        notifyDataSetChanged();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }

}

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون از پاسختون
ولی من تمام این کد ها رو قبلا هم تست کردم
در صورتی که فرگمنت وسط حذف شود برنامه پیام unfortunately has stoped رو میده
در سایت های خارجی سرچ کردم در این مورد نوشته با حذف فرگمنت وسط شماره ایندکس فرگمنت ها رو باید شیفت بدیم به عقب ولی کد خاصی برای این موضوع پیدا نکردم

برای شیفت دادن فرگمنت ها راه حلی هست؟

 

frag2.png

 

 

 

 

 

ویرایش شده توسط alizare
لینک ارسال
به اشتراک گذاری در سایت های دیگر
در در 1396/03/29, 20:04:47، alizare گفته است :

ممنون از پاسختون
ولی من تمام این کد ها رو قبلا هم تست کردم
در صورتی که فرگمنت وسط حذف شود برنامه پیام unfortunately has stoped رو میده
در سایت های خارجی سرچ کردم در این مورد نوشته با حذف فرگمنت وسط شماره ایندکس فرگمنت ها رو باید شیفت بدیم به عقب ولی کد خاصی برای این موضوع پیدا نکردم

برای شیفت دادن فرگمنت ها راه حلی هست؟

 

frag2.png

 

 

 

 

 

اگه امکانش هست در این مورد راهنمایی کنید
همه پروژه من به همین موضوع بستگی داره

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط Alma
      سلام 
      من یه اکتیویتی (mainActivity)با 3 تا فرگمنت دارم که با bottomNavigationView از یک فرگمنت به فرگمنت بعدی میرم(navigationControler).
      چطور میشه از یکی از فرگمنت ها به اکتیویتی دیگری (secondActivity) رفت.
      fragmentMnager رو هم امتحان کردم .یک بار از فرگمنت به اکتیویتی رفت و بار دوم که امتحان کردم از برنامه خارج شد.
    • توسط SamanH
      با سلام و عرض ادب و خسته نباشید
      یک  سوال مهم داشتم ، خیلی از سایت ها ، آموزش ها ، فیلم ها رو حتی در سایت های خارجی تماشا کردم و هرکدوشون درباره اتصال فرگمنت به Bottombar کتابخانه دیزاین (( Support Design Library))) ی چیز گفته بودن ، و من وقتی اونها را انجام می دادم ، همیشه یک جای کار خراب بود و یجورایی باگ به وجود می اومد..
       
      سوال من اینه که چجوری فرگمنت ها رو به BottomBar متصل کنیم و وقتی رو هرکدومشون کلیک می کنیم ، یک فرگمنت اجرا بشه ، مثل برنامه کافه بازار !!!!!!
       
      ممنون میشم لطف کنید یک آموزش کاملی قرار بدید تا بتونم درستش کنم!!!
       
      ًضروریه !!!
       
      متشکرم....
    • توسط SamanH
      با سلام و عرض ادب و خسته نباشید
      یک  سوال مهم داشتم ، خیلی از سایت ها ، آموزش ها و فیلم ها هم در وب سایت های ایرانی و خارجی تماشا کردم و هرکدوشون درباره اتصال فرگمنت به Bottombar کتابخانه دیزاین (( Support Design Library))) ی چیز گفته بودن ، و من وقتی اونها را انجام می دادم ، همیشه یک جای کار خراب بود و یجورایی باگ به وجود می اومد..
       
      سوال من اینه که چجوری فرگمنت ها رو به BottomBar وصل کنیم و وقتی رو هرکدومشون کلیک می کنیم ، یک فرگمنت اجرا بشه ، مثل برنامه کافه بازار !!!!!!
       
      ممنون میشم لطف کنید یک آموزش کاملی قرار بدید تا بتونم درستش کنم!!!
       
      ًضروریه !!!
    • توسط masoudandroid
      با سلام
       از اکتیویتی ۱ میخوام intent کنم به فرگمنتی در اکتیویتی۲  به نظرتون باید چیکار کنم؟؟؟
      در واقع یه اکتیویتی دارم که میخوام با کلیک بر روی یه تکست ویو بره به یه فرگمنت که جزئی از ساختار bottomnavigation هستش...
      تو فرگمنت که در اکتیویتی 2 قرار داره باید کدی زده بشه تا اکتیویتی 1 رو بخونه؟؟(قابل توجه که من اطلاعات نمیخوام پاس بدم فقط میخوام صفحات جابجا بشن)
      باتشکر از پاسخگویی شما دوستان و همکاران عزیز.
    • توسط soroush80
      سلام دستان من به یه مشکلی خوردم من یه battom barدرست کردم و خب چند تا فرگمنت براش قرار دادم الان میخوام تو یکی از فرگمنت هام  toolbarبزارم نه تو کل برنامه اما چون فایل جاوای اون activity من به صورت extends fragmentهست خیلی از خواصAppCompatActivity رو نداره به همین خاطر نمیتونم toolbarرو بهش اظافه کنم میخواستم اگه میشه یا یه روش بهم بگید که fragment هم خواصAppCompatActivity رو پیدا کنه یا یه راه حل بهم بدید.
      خیلی ممنون.
  • فایل

×
×
  • اضافه کردن...