当一个片段调用另一个片段时,如何使用新片段更新导航抽屉列表

时间:2018-06-21 21:24:25

标签: android android-fragments navigation

当我的“家庭片段活动”正在从自身调用另一个片段时,如何更新导航抽屉。 我已经在我的家庭片段活动中创建了卡片视图,因此当我在片段活动中按下卡片时,onClickListener会被调用,但是我的问题是我的导航抽屉项没有对应于该片段进行更新,因此如何在何时更新导航抽屉一个片段叫另一个片段。

HomeFragment活动

public class HomeFragment extends Fragment {

    public HomeFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        ((NaviActivity)getActivity()).setActionBarTitle("Home");

        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_home, container, false);
    }

    @Override
    public void onViewCreated(@NonNull  View view, @Nullable Bundle savedInstanceState) {

        view.findViewById(R.id.home_home_fragment).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(),"You are already at Home ;)",Toast.LENGTH_SHORT).show();
            }
        });

        view.findViewById(R.id.discussion_home_fragment).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Inflating Discussion Frag from Home Frag
                Fragment someFragment = new DiscussionFragment();
                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.replace(R.id.fragment_loader, someFragment ); // give your fragment container id in first parameter
                transaction.addToBackStack(null); // if written, this transaction will be added to backstack
                transaction.commit();
                Toast.makeText(getActivity(),"You are now in Discussion Fragment ;)",Toast.LENGTH_SHORT).show();

            }
        });

        view.findViewById(R.id.events_home_fragment).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Inflating Events Frag from Home Frag
                Fragment someFragment = new EventsFragment();
                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.replace(R.id.fragment_loader, someFragment ); // give your fragment container id in first parameter
                transaction.addToBackStack(null);  // if written, this transaction will be added to backstack
                transaction.commit();
                Toast.makeText(getActivity(),"You are now in Activity Fragment ;)",Toast.LENGTH_SHORT).show();
            }
        });
        super.onViewCreated(view, savedInstanceState);
    }
}

MainActivity

            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);

            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            drawer.addDrawerListener(toggle);
            toggle.syncState();

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

            //set default fragment as Home Fragment
            android.support.v4.app.FragmentTransaction ft =getSupportFragmentManager().beginTransaction();
            ft.replace(R.id.fragment_loader,new HomeFragment());
            ft.commit();

            navigationView.setCheckedItem(R.id.nav_home);
        }

        @Override
        public void onBackPressed() {
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                if (doubleBackToExitPressedOnce) {
                    super.onBackPressed();
                    return;
                }

                this.doubleBackToExitPressedOnce = true;
                Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

                new Handler().postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        doubleBackToExitPressedOnce=false;
                    }
                }, 2000);
            }
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.navi, menu);
            return true;

            //Inflate the menu on share icon pressed in nav drawer
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();

            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                Toast.makeText(this,"Settings Pressed",Toast.LENGTH_SHORT).show();
            }
            else if(id == R.id.action_logout){
                //logout from the account
                progressDialog.setMessage("Please wait\tSigning you Out!");
                progressDialog.show();
                finish();
                firebaseAuth.signOut();
                Intent intent = new Intent(NaviActivity.this,LoginActivity.class);
                startActivity(intent);
            }

            return super.onOptionsItemSelected(item);
        }


        //Setting title for title bar for each fragment
        public void setActionBarTitle(String title){
            getSupportActionBar().setTitle(title);
        }

        @SuppressWarnings("StatementWithEmptyBody")
        @Override

        public boolean onNavigationItemSelected(MenuItem item) {
            // Handle navigation view item clicks here.
            int id = item.getItemId();

            if (id == R.id.nav_home) {
                android.support.v4.app.FragmentTransaction ft =getSupportFragmentManager().beginTransaction();
                ft.replace(R.id.fragment_loader,new HomeFragment());
                ft.commit();
            } else if (id == R.id.nav_chat) {
                android.support.v4.app.FragmentTransaction ft =getSupportFragmentManager().beginTransaction();
                ft.replace(R.id.fragment_loader,new DiscussionFragment());
                ft.commit();
            } else if (id == R.id.nav_events) {
                android.support.v4.app.FragmentTransaction ft =getSupportFragmentManager().beginTransaction();
                ft.replace(R.id.fragment_loader,new EventsFragment());
                ft.commit();
            } else if (id == R.id.nav_about_us) {
                startActivity(new Intent(NaviActivity.this,AboutUsActivity.class));
            }
        }
    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

0 个答案:

没有答案