رفتن به مطلب
  • 0

مشکل در ست کردن فرگمنت ها با Bottom Navigation


coco

سوال

سلام دوستان

من در برنامم اومدم ار باتم نویگیشن استفاده میکنم

بعد بالاش هم یه فریم لی اوت گذاشتم

و میام تو رویداد آن تب سلکتدفرگمنتی که فریم لی اوت نشون میده رو تغییر میدم

حالا من تو فرگمنت اول یه ریسایکلر دارم که اطلاعات رو از اینترنت میگیره و نشون میده

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

وقتی سوییچ میکنم بینشون فرگمنتی که ادیت تکست داره ، متنه ادیت تکستش همون میمونه اما فرگمنتی که ریسایکلر داره (1 آیتم داره که تسته) بهش 1 دونه از همون آیتم اضافه میشه :(

 

اینم کدا :

MainActivity:

HBottomNavigation bottomNavigation = (AHBottomNavigation) findViewById(R.id.bottom_navigation);

        AHBottomNavigationItem item_all = new AHBottomNavigationItem("خانه", R.drawable.home, R.color.colorAccent);
        AHBottomNavigationItem item_search = new AHBottomNavigationItem("جستجو", R.drawable.magnify, R.color.colorAccent);
        AHBottomNavigationItem item_add = new AHBottomNavigationItem("ارسال", R.drawable.plus_circle, R.color.colorAccent);
        AHBottomNavigationItem item_profile = new AHBottomNavigationItem("پروفایل", R.drawable.account, R.color.colorAccent);

        bottomNavigation.addItem(item_all);
        bottomNavigation.addItem(item_search);
        bottomNavigation.addItem(item_add);
        bottomNavigation.addItem(item_profile);

        bottomNavigation.setDefaultBackgroundColor(Color.parseColor("#689f38"));

        bottomNavigation.setAccentColor(Color.parseColor("#FFFFFF"));
        bottomNavigation.setInactiveColor(Color.parseColor("#DDDDDD"));

        bottomNavigation.setForceTitlesDisplay(true);


frameLayout = (FrameLayout) findViewById(R.id.fLayout);
        manager = getSupportFragmentManager();
        transaction = manager.beginTransaction();
        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        all = new All(getApplicationContext());
        newPost = new NewPost(getApplicationContext());
        transaction.add(R.id.fLayout , all);
        transaction.commit();

        bottomNavigation.setOnTabSelectedListener(new AHBottomNavigation.OnTabSelectedListener() {
            @Override
            public boolean onTabSelected(int position, boolean wasSelected) {

                switch (position){
                    case 0:
                        selected = all;
                        break;
                    case 1:

                        break;
                    case 2:
                        selected = newPost;
                        break;
                    case 3:

                        break;

                }

                if (!wasSelected){
                    switch (position){
                        case 0:
                            transaction =  manager.beginTransaction();
                            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                            transaction.replace(R.id.fLayout,all);
                            transaction.commit();
                            break;
                        case 1:

                            break;
                        case 2:
                            transaction =  manager.beginTransaction();
                            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                            transaction.replace(R.id.fLayout,newPost);
                            transaction.commit();
                            break;
                        case 3:

                            break;

                    }
                }

                return true;
            }
        });

All Fragment:

RecyclerView rv;
    OkHttpClient client = new OkHttpClient();

    JSONArray jsonArray;

    List<Pic> PicList = new ArrayList<Pic>();
    public static int Offset;
    EndlessRecyclerOnScrollListener erosl;
    RecyclerAdapter ra;

    private Context mContext;

    private ViewGroup mContainer;
    public All(Context context) {
        super();
        this.mContext = context;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_all,container,false);

        mContainer = container;
        try {
            jsonArray = new JSONArray("");
        } catch (JSONException e) {
            e.printStackTrace();
        }

        rv = (RecyclerView) view.findViewById(R.id.mainRV);

        ra = new RecyclerAdapter(PicList,mContext);

        LinearLayoutManager llm = new LinearLayoutManager(mContext);
        rv.setLayoutManager(llm);
        rv.setHasFixedSize(true);


        erosl = new EndlessRecyclerOnScrollListener(llm) {
            @Override
            public void onLoadMore(int current_page, int totalItemCount) {
                Offset = totalItemCount;
                try {
                    getList();
                    Log.e("tot",""+totalItemCount);
                } catch (Exception e) {
                    e.printStackTrace();
                }


            }
        };


        Offset = 0;
        try {
            getList();
            Log.e("GET","LIST");
        } catch (Exception e) {
            e.printStackTrace();
        }
        rv.setOnScrollListener(erosl);
        return view;
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        
    }

    public void getList() throws Exception{
        final Request request = new Request.Builder()
                .url("http://link?Offset="+Offset)
                .build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Request request, IOException e) {
                Handler mainHandler = new Handler(mContext.getMainLooper());
                Runnable myRunnable = new Runnable() {
                    @Override
                    public void run() {
                        rv.setVisibility(View.GONE);
                        Offset = 0;
                    }
                };
                mainHandler.post(myRunnable);
                e.printStackTrace();

            }

            @Override
            public void onResponse(Response response) throws IOException {

                String j = response.body().string();
                Log.e("J===",j);
                try {
                    jsonArray = new JSONArray(j);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                if (j.equals("0 results")) {
                    if (Offset == 0) {
                        Handler mainHandler = new Handler(mContext.getMainLooper());
                        Runnable myRunnable = new Runnable() {
                            @Override
                            public void run() {
                                rv.setVisibility(View.GONE);
                                Toast.makeText(mContext, "0", Toast.LENGTH_SHORT).show();
                            }
                        };
                        mainHandler.post(myRunnable);

                    }
                }else if(j.equals("[]")){
                    Handler mainHandler = new Handler(mContext.getMainLooper());
                    Runnable myRunnable = new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(mContext, "0", Toast.LENGTH_SHORT).show();
                        }
                    };
                    mainHandler.post(myRunnable);
                }else{
                    try {

                        if (jsonArray.length() > 0) {
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject jsonObject = jsonArray.getJSONObject(i);
                                Pic pic = new Pic();
                                if (!jsonObject.isNull("Caption")) {
                                    pic.Caption = jsonObject.getString("Caption");
                                }

                                if (!jsonObject.isNull("Date")) {
                                    pic.Date = jsonObject.getString("Date");
                                }

                                if (!jsonObject.isNull("PicLink")) {
                                    pic.PicLink = jsonObject.getString("PicLink");
                                }

                                if (!jsonObject.isNull("Sender_Username")) {
                                    pic.Sender_Username = jsonObject.getString("Sender_Username");
                                }

                                if (!jsonObject.isNull("Likes")) {
                                    pic.Likes = jsonObject.getString("Likes");
                                }

                                if (!jsonObject.isNull("id")) {
                                    pic.ID = jsonObject.getString("id");
                                }

                                PicList.add((i+Offset), pic);
                                Log.e("Add","ed");
                            }


                            Handler mainHandler = new Handler(mContext.getMainLooper());
                            Runnable myRunnable = new Runnable() {
                                @Override
                                public void run() {
                                    if (Offset == 0){
                                        rv.setAdapter(ra);
                                        ra.notifyDataSetChanged();
                                    }else{
                                        ra.notifyItemInserted(Offset+1);
                                        rv.scrollToPosition(Offset);
                                    }
                                    rv.setVisibility(View.VISIBLE);
                                }
                            };
                            mainHandler.post(myRunnable);
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                        Handler mainHandler = new Handler(mContext.getMainLooper());
                        Runnable myRunnable = new Runnable() {
                            @Override
                            public void run() {
                                rv.setVisibility(View.GONE);
                            }
                        };
                        mainHandler.post(myRunnable);
                    }



                }
            }
        });

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

7 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

دوستان مشکل حل شد :pardon::oops:

:cheshmak: من همش داشتم از متوده Replace استفاده میکردم، در حالی که باید همه فرگمنتا رو add میکردم و با hide و show تغییر میدادم نمایششونو :)

 

از همینجا از درخواست عاجزانه دارم قسمت 3 آموزش کار با فرگمنت ها رو قرار بدن :crazy::DD::give_rose:

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

دقیقا نفهمیدم چی گفتی

ولی اگه میخوای وقتی بین فرگمنت ها سوییچ کنی فرگمنت مقادیرش آپدیت بشه از این متد استفاده کن توی اون فرگمنت

public void setUserVisibleHint(boolean isVisibleToUser) {
if (isVisibleToUser){
 //دستورات
}
}



 

 

 

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

دقیقا نفهمیدم چی گفتی

ولی اگه میخوای وقتی بین فرگمنت ها سوییچ کنی فرگمنت مقادیرش آپدیت بشه از این متد استفاده کن توی اون فرگمنت

public void setUserVisibleHint(boolean isVisibleToUser) {
if (isVisibleToUser){
 //دستورات
}
}



سلام عزیز

خب الان من میخوام آپدیت نشه :)

میخوام همونایی که قبله سوییچ بوده بمونه :DD:

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

خوب بریزشون توی یه متغیر بعد تو حالت بالا که گفتم دوباره بریزشون توی همون ادیت تکست. نمیشه اینطوری؟

احتمالا تو حالت onpause باید بریزی تو متغیر و نو حالت بالا پس بگیری

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

خوب بریزشون توی یه متغیر بعد تو حالت بالا که گفتم دوباره بریزشون توی همون ادیت تکست. نمیشه اینطوری؟

احتمالا تو حالت onpause باید بریزی تو متغیر و نو حالت بالا پس بگیری

ممنون عزیز

تست میکنم همینجا خبر میدم :)

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

دوستان مشکل حل نشد

با دیباگ کردن فهمیدم که متوده onCreateView فرگمنت دوباره لود میشه :(

لطفا راهنمایی کنید  :give_rose: 

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

سلام

 

بنده از شما مدیران گرامی خواهشمندم در رابطه با این موضوع یه آموزش کامل 0 تا 100 رو درست کنید

مثل همین که اطلاعات رو توش قرار بده و ... با این کتابخانه 

 

 

از شما خواهش میکنم....

نسخه ی جدید این کتابخونه خودش ویو پیجر داره

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

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...