Как открыть фрагмент в окне навигации, у которого есть динамический список меню из динамического массива - PullRequest
0 голосов
/ 31 января 2019

Я создал навигационный ящик, в котором есть динамические пункты меню, которые исходят из моего API. Теперь я хочу открыть фрагмент на основе опции, которую я выбираю из навигационного ящика, я хочу открыть фрагмент подопций основных параметров из элемента навигации.

Например, в моем навигационном ящике у меня есть динамический массив, который имеет четыре значения 1) отчеты 2) Анализ 3) Свяжитесь с нами 4) О нас

В отчетах у меня есть один отчет портфеля значений, когда я нажимаюна нем я хочу открыть этот фрагмент, как я могу добиться этого?мой массив динамический, а основной массив имеет идентификатор отчета, а массив подопций имеет родительский идентификатор, как я сравниваю его с идентификатором пунктов меню.

This is my code.

    MainActivity.java

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);


            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame
                            , new DashboardFragment())
                    .commit();

            initView();
            onClick();


            listData = new ArrayList<>();
            parentIdList = new ArrayList<>();
            reportIdList = new ArrayList<>();
            listSubData = new ArrayList<>();
            reportSubList = new ArrayList<>();

            toolbar.setTitle("Dashboard");
            toolbar.setBackgroundColor(getResources().getColor(R.color.colorLightBlue));
            toolbar.setTitleTextColor(getResources().getColor(R.color.colorWhite));
            setSupportActionBar(toolbar);


            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            //drawer.setDrawerListener(toggle);

            drawerLayout.addDrawerListener(toggle);
            toggle.syncState();

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(MainActivity.this);

    //        ActionBar bar = getSupportActionBar();
    //        bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0059b3")));


            SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
            loginid = sp.getInt("loginId", 0);
            userrole = sp.getInt("userrole", 0);
            clientid = sp.getInt("clientid", 0);
            username = sp.getString("username", "");


            Log.e(" prefs loginId", String.valueOf(loginid));
            Log.e("prefs userrole", String.valueOf(userrole));
            Log.e(" prefs clientid", String.valueOf(clientid));

            if (userrole == 99) {
                tvUserRole.setText("CLIENT");
                tvUserName.setText(username);
            } else {
                tvUserRole.setText("PARTNER");
                tvUserName.setText(username);
            }


            NavigationOptionsData(String.valueOf(userrole), String.valueOf(loginid), "A");

            for(int i=0;i<reportIdList.size();i++)
            {
                if(MenuItemId == reportIdList.get(i))
                {

                    Log.e("Menuitemid=", String.valueOf(MenuItemId));

    //                fragToCall = listData.get(i);
    //                ReportFragment fragment = new ReportFragment();
    //                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    //                fragmentTransaction.replace(R.id.frame, fragment, fragToCall);
    //                fragmentTransaction.add(R.id.test_fragment, fragment, "testtag");
    //
    //                fragmentTransaction.addToBackStack(fragToCall);
    //                fragmentTransaction.commitAllowingStateLoss();
                }
                else
                {
                    Log.e("Not equal", "");
                }
            }

        }

        private void initView() {

            navigationView = findViewById(R.id.nav_view);
            drawerLayout = findViewById(R.id.drawer_layout);
            toolbar = findViewById(R.id.toolbar);
            rvNavOptions = (ListView) findViewById(R.id.rv_nav_data);
            rvNavSubOptions = (ListView) findViewById(R.id.rv_nav_sub_data);

            header = navigationView.getHeaderView(0);
            tvUserName = (TextView) header.findViewById(R.id.tv_user_name_drawer);
            tvUserRole = (TextView) header.findViewById(R.id.tv_user_role_drawer);
            tvOptionsId = (TextView) findViewById(R.id.tv_option_id);


        }




        private void NavigationOptionsData(String roleid, String loginId, String device) {

            final APIInterface apiInterface = APIClient.getClient().create(APIInterface.class);
            final NavigationDrawerModel navigationDrawerModel = new NavigationDrawerModel(roleid, loginId, device);
            Call<NavigationDrawerModel> call1 = apiInterface.createNavigationOption(navigationDrawerModel);
            call1.enqueue(new Callback<NavigationDrawerModel>() {
                @Override
                public void onResponse(Call<NavigationDrawerModel> call, Response<NavigationDrawerModel> response) {
                    user1 = response.body();

                    Log.e("Navigation data===", user1.getT0().get(0).getReportText());
                    Log.e("Length of t0====", String.valueOf(user1.getT0().size()));
                    Log.e("Length of t1====", String.valueOf(user1.getT1().size()));

                    for (int i = 0; i < user1.getT0().size(); i++) {


                        String reportText = user1.getT0().get(i).getReportText();
                        Integer reportId = user1.getT0().get(i).getReportId();
                        reportIdList.add(reportId);
                        listData.add(reportText);

                    }

                    for (int i = 0; i < user1.getT1().size(); i++) {

                        Integer reportParentId = user1.getT1().get(i).getParentId();
                        String reportSubName = user1.getT1().get(i).getReportText();
                        parentIdList.add(reportParentId);
                        listSubData.add(reportSubName);
                    }

                    Log.e("Size of parentid list==", String.valueOf(parentIdList.size()));
                    Log.e("Size of reportid list==", String.valueOf(reportIdList.size()));


                    navigationDrawerMenu = new NavigationDrawerMenu(listData, parentIdList, getApplicationContext());
                    rvNavOptions.setAdapter(navigationDrawerMenu);


                }

                @Override
                public void onFailure(Call<NavigationDrawerModel> call, Throwable t) {

                    Log.e("Error is==", t.getMessage());
                }


            });
        }


        private void onClick() {

            rvNavOptions.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


                    navigationDrawerMenu.onClick(view);
                    MenuItemId = (int) id;
                    Log.e("id of item click", String.valueOf(id));


                }
            });

        }


        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

            int id = menuItem.getItemId();
            Log.e("Menu item id is=", String.valueOf(id));
            return true;
        }

Я сравнил menuitemid с элементом reportidlist, это правильно?

...