alizare

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

4 ارسال در این موضوع قرار دارد

با سلام

در طراحی یک 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

 

 

 

 

 

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

با تشکر

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط soroush80
      سلام دستان من به یه مشکلی خوردم من یه battom barدرست کردم و خب چند تا فرگمنت براش قرار دادم الان میخوام تو یکی از فرگمنت هام  toolbarبزارم نه تو کل برنامه اما چون فایل جاوای اون activity من به صورت extends fragmentهست خیلی از خواصAppCompatActivity رو نداره به همین خاطر نمیتونم toolbarرو بهش اظافه کنم میخواستم اگه میشه یا یه روش بهم بگید که fragment هم خواصAppCompatActivity رو پیدا کنه یا یه راه حل بهم بدید.
      خیلی ممنون.
    • توسط MaHdI-09
      سلام.من دوتا فرگمنت دارم که توی یک ویوپیجر هستش.میخوام هر بار که اسلاید کردم روی هر اکتیویتی یک کار خاصی انجام بشه.
      از onPause,onStart هم استفاده کردم اما نشد.
      ممنون میشم پاسخ بدید
       
    • توسط aminsh77
      با سلام
      من برای ارتباط بین اکتیویتی و فراگمنت از interface استفاده کردم به شکل زیر:
      کدهای فراگمنت:
      public class Fragment_one extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.one_fragment, container, false); return view; } public interface message { public void showName(int name); } @Override public void onResume(){ super.onResume(); //OnResume Fragment ((message) getContext()).showName(1); } }  
      و کد های اکتویتی:
       
      public class MainActivity extends AppCompatActivity implements Fragment_one.message, Fragment_two.message, Fragment_three.message{ Toolbar toolbar; int fragment_number; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setTitle(getString(R.string.app_name)); //// مشکل //// چون خارج از متد showname هست /// مقدار name رو نمیگیره int a = fragment_number; System.out.println("Fragment-Num :" + a); //// مشکل } @Override public void showName(int name) { fragment_number = name; /// این چون داخل متد showName هست ///مشکلی نداره و کار میده System.out.println("Fragment :" + fragment_number); } }  
       
      کد به خوبی کار میده و مشکل من اینه اون مقدار عددی showName رو وقتی توی  fragment_number خارج از متد showName مقدار رو نمیگیره
      اون قسمتی که نوشتم مشکل رو میگم تو کد های اکتیویتی
       
      حالا چجور اون مقدار رو خارج از متد بگیرم؟؟
       
      لطفا راهنماییم کنید خیلی گیرم
       
      با تشکر
    • توسط razzagh2826
      سلام ببخشید چه جوری میتونم تو کاسی از نوع فرگیم دکمه اینها تعریف کنم و باهاش کار کنم
      ؟؟
      کلاس من از این نوع است؟؟
      public class CreateFragment extends Fragment {
      public CreateFragment() {
      }
       
    • توسط sroash
      با عرض سلام و خسته نباشید
      چطور میتونم از نویگیشن دراور و ViewPager تو کلاس Main Activity خودم استفاده کنم
      من این کار رو کردم ولی با مشکل روبه رو شدم
      لطفا راهنمایی کنید با تشکر

  • دوره آموزشی اندروید ایران کانادا آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin آموزش برنامه نویسی ios
  • فایل