我的导航抽屉上的项目单击侦听器不起作用

问题描述 投票:0回答:1

我想在主要活动中显示导航抽屉导航抽屉,但它在单击侦听器上使用时无法正常工作。我想更改导航抽屉中单击侦听器的片段。我尝试了很多,但无法正常工作。还请指导我如何隐藏导航抽屉中的不同片段,并指导我如何在单击自定义设计按钮时再次打开导航抽屉。

package com.sprintsolutions.palmtree.activity;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;

import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MenuItem;
import android.widget.Toast;

import com.google.android.material.navigation.NavigationView;
import com.sprintsolutions.palmtree.R;
import com.sprintsolutions.palmtree.fragment.ForgetPasswordFragment;
import com.sprintsolutions.palmtree.fragment.HomeFragment;
import com.sprintsolutions.palmtree.fragment.LoginStartFragment;

public class FragmentContainerActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{

    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mToggle;

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



        final Fragment menuPractiseFragment=new HomeFragment();
        getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
                menuPractiseFragment,menuPractiseFragment.getClass().getSimpleName())
                .addToBackStack(null).commit();

        mDrawerLayout=(DrawerLayout)findViewById(R.id.activity_main);
        mToggle=new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);
        mDrawerLayout.addDrawerListener(mToggle);
        mToggle.syncState();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

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

        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                int id = menuItem.getItemId();

                if (id == R.id.db) {
                    Toast.makeText(FragmentContainerActivity.this, "Dashboard Activity", Toast.LENGTH_SHORT).show();
                } else if (id == R.id.search) {

                    Toast.makeText(FragmentContainerActivity.this, "Search Activity", Toast.LENGTH_SHORT).show();
                } else if (id == R.id.event) {

                    Toast.makeText(FragmentContainerActivity.this, "Event aCTIVITY", Toast.LENGTH_SHORT).show();
                }

                mDrawerLayout.closeDrawer(GravityCompat.START);
                return true;
            }
        });

    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (mToggle.onOptionsItemSelected(item)){
            return true;
        }
        return super.onOptionsItemSelected(item);
    }


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


        return false;
    }

}
java android navigation-drawer
1个回答
0
投票

您在NavigationView.OnNavigationItemSelectedListener中具有工具FragmentContainerActivity,因此请使用替代方法,无需使用

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener()

         public class FragmentContainerActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{

        private DrawerLayout mDrawerLayout;
        private ActionBarDrawerToggle mToggle;

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



            final Fragment menuPractiseFragment=new HomeFragment();
            getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
                    menuPractiseFragment,menuPractiseFragment.getClass().getSimpleName())
                    .addToBackStack(null).commit();

            mDrawerLayout=(DrawerLayout)findViewById(R.id.activity_main);
            mToggle=new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);
            mDrawerLayout.addDrawerListener(mToggle);
            mToggle.syncState();
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);

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

        }


        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            if (mToggle.onOptionsItemSelected(item)){
                return true;
            }
            return super.onOptionsItemSelected(item);
        }


        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
         int id = menuItem.getItemId();

                    if (id == R.id.db) {
                        Toast.makeText(FragmentContainerActivity.this, "Dashboard Activity", Toast.LENGTH_SHORT).show();
                    } else if (id == R.id.search) {

                        Toast.makeText(FragmentContainerActivity.this, "Search Activity", Toast.LENGTH_SHORT).show();
                    } else if (id == R.id.event) {

                        Toast.makeText(FragmentContainerActivity.this, "Event aCTIVITY", Toast.LENGTH_SHORT).show();
                    }

                    mDrawerLayout.closeDrawer(GravityCompat.START);
                    return true;
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.