Хотите перейти к другому действию из панели навигации

у меня есть карта активности. и у него есть панель навигации. но когда я нажимаю на любой из элементов навигации, я не могу перейти к другому действию. Прилагаю сюда свой код. ошибок нет. Когда я щелкаю любой элемент панели навигации, он не перемещается в другое действие.

     nv = (NavigationView) findViewById(R.id.nv);
            nv.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    int id = item.getItemId();
                    switch (id) {
                        case R.id.profile:

                            Intent i = new Intent(HomeActivity.this, ProfileActivity.class);
                            startActivity(i);
                            break;
                        case R.id.dona:
                            Intent j = new Intent(HomeActivity.this, DonateActivity.class);
                            startActivity(j);
                            break;

                        case R.id.pla:
                            Intent k = new Intent(HomeActivity.this, PlantActivity.class);
                            startActivity(k);
                            break;

                        case R.id.not:
                            Intent l = new Intent(HomeActivity.this, NotificationActivity.class);
                            startActivity(l);
                            break;

                        case R.id.hist:
                            Intent m = new Intent(HomeActivity.this, HistoryActivity.class);
                            startActivity(m);
                            break;

                        case R.id.hel:
                            Intent n = new Intent(HomeActivity.this, HelpActivity.class);
                            startActivity(n);
                            break;



                    }

                    return false;

                }
            });





 SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);


    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (ContextCompat.checkSelfPermission(this,
                    Manifest.permission.ACCESS_FINE_LOCATION)
                    == PackageManager.PERMISSION_GRANTED) {
                buildGoogleApiClient();
                mMap.setMyLocationEnabled(true);
            }
        } else {
            buildGoogleApiClient();
            mMap.setMyLocationEnabled(true);
        }

    }






 protected synchronized void buildGoogleApiClient() {
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API).build();
        mGoogleApiClient.connect();
    }

    @Override
    public void onConnected(Bundle bundle) {

        mLocationRequest = new LocationRequest();
        mLocationRequest.setInterval(1000);
        mLocationRequest.setFastestInterval(1000);
        mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
        }

    }

    @Override
    public void onConnectionSuspended(int i) {

    }

    @Override
    public void onLocationChanged(Location location) {

        mLastLocation = location;
        if (mCurrLocationMarker != null) {
            mCurrLocationMarker.remove();
        }
        //Place current location marker
        LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
        MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.position(latLng);
        markerOptions.title("Current Position");
        markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
        mCurrLocationMarker = mMap.addMarker(markerOptions);

        //move map camera
        mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
        mMap.animateCamera(CameraUpdateFactory.zoomTo(11));

        //stop location updates
        if (mGoogleApiClient != null) {
            LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
        }

    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if (t.onOptionsItemSelected(item))
            return true;
        int id = item.getItemId();



        if (id == R.string.action_settings) {
            return true;
        }


            return super.onOptionsItemSelected(item);


    }
}

не могли бы вы сказать мне ошибку, что у вас есть

Rishav Singla 26.10.2018 06:45

Вы уверены, что это HomeActivity? Вместо этого попробуйте getActivity

Arahasya 26.10.2018 06:47

Ошибки нет. Когда я щелкаю любой элемент в панели навигации, мне нужно перейти к другому действию. Я добавил случай переключателя и намерение внутрь, но когда я нажимаю, ничего не происходит

Aseel Ali 26.10.2018 06:47

@Arahasya HomeActivity - моя текущая деятельность

Aseel Ali 26.10.2018 06:48

@AseelAli, ваш код выглядит нормально ... вам нужно отладить свой код и проверить, что все действия зарегистрированы в файле манифеста. Также проверьте свою текущую активность, т.е. убедитесь, что это HomeActivity.

Rishav Singla 26.10.2018 06:50

Вы не закрываете ящик stackoverflow.com/a/22467742/10290109

Arahasya 26.10.2018 06:52

@RishavSingla да, я проверил. все еще не работает

Aseel Ali 26.10.2018 09:10

@Arahasya Я сделал .. все еще не работает

Aseel Ali 26.10.2018 09:10

поделитесь своим кодом на github, чтобы я мог его проверить

Arahasya 26.10.2018 09:11

@Arahasya Я не знаю, как делиться кодом на github. Но я могу поделиться кодом или всем проектом через Google Drive. Это нормально?

Aseel Ali 26.10.2018 10:38

Да ладно, поделись

Arahasya 26.10.2018 10:44

@Arahasya drive.google.com/file/d/1ig85OXSI4lgG7FVie2adT36vhAd8pdZW/…

Aseel Ali 26.10.2018 10:53
3
12
463
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

you need to return truein end of onNavigationItemSelected

  nv.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    int id = item.getItemId();
                    switch (id) {
                        case R.id.profile:

                            Intent i = new Intent(HomeActivity.this, ProfileActivity.class);
                            startActivity(i);
                            break;

                        /*--your code--*/


                        case R.id.hist:
                            Intent m = new Intent(HomeActivity.this, HistoryActivity.class);
                            startActivity(m);
                            break;

                        case R.id.hel:
                            Intent n = new Intent(HomeActivity.this, HelpActivity.class);
                            startActivity(n);
                            break;



                    }

                yourDrawer.closeDrawer(GravityCompat.START);

                    return true;       //you need to return true here, not false

                }
            });

Комментарии не подлежат расширенному обсуждению; этот разговор был переехал в чат.

Samuel Liew 26.10.2018 09:29

Попробуй это

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

    public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();
    
    if (id == R.id.nav_buildings) {
        startActivity(new Intent(SuperAdminHomeActivity.this,BuildingsActivity.class));
    
    } else if (id == R.id.nav_companies) {
        startActivity(new Intent(SuperAdminHomeActivity.this,CompaniesActivity.class));
    
    } else if (id == R.id.nav_reports) {
        startActivity(new Intent(SuperAdminHomeActivity.this,ReportsActivity.class));
    
    } else if (id == R.id.nav_invoice) {
        startActivity(new Intent(SuperAdminHomeActivity.this,InvoiceActivity.class));
    
    } else if (id == R.id.nav_notifications) {
        startActivity(new Intent(SuperAdminHomeActivity.this,NotificationsActivity.class));
    
    } else if (id == R.id.nav_ticket) {
        startActivity(new Intent(SuperAdminHomeActivity.this,TicketActivity.class));
    
    }
    else if (id == R.id.nav_my_ticket) {
        startActivity(new Intent(SuperAdminHomeActivity.this,TicketsAddActivity.class));
    }
    
    else if(id==R.id.nav_logout){
        alertDialogue("Do you want to logout?");
    }
    
    drawer.closeDrawer(GravityCompat.START);
    return true;
     }
    
  • Я не использую прослушиватель щелчков ящика.

  • это мой макет ящика

enter image description here

все работает нормально, пожалуйста, попробуйте

вы закрыли ящик прямо здесь. это макет ящика, который вы закрываете?

Aseel Ali 26.10.2018 07:26

Все еще не получается

Aseel Ali 26.10.2018 07:39
Ответ принят как подходящий

После тщательного изучения вашего полного кода я понял, что .setNavigationItemSelectedListener не вызывается. Даже если ящик отображался, это было позади вашей деятельности. Значит, вы на самом деле не нажимали на нее.

Итак, простое решение:

nv.bringToFront();

Поместите это после инициализации nv

Также щелкните стрелку вверх, если ответ оказался для вас полезным.

Arahasya 26.10.2018 14:24

мне нужна еще одна помощь

Aseel Ali 27.10.2018 07:27

Привет, мне нужна помощь. У меня есть задание, которое содержит карту и уведомления. Поэтому, когда я перехожу к этому занятию, я хочу отобразить наложенное изображение с 4 кнопками изображения в нем. Перед доступом к карте. Ниже я прикреплю ссылку на скриншот с Google Диска. Пожалуйста, помогите

Aseel Ali 27.10.2018 07:27

так в чем проблема

Arahasya 27.10.2018 07:30

Я не знаю, как добавить изображение, наложив на него 4 кнопки изображения.

Aseel Ali 27.10.2018 07:37

Тогда погуглите. Сначала сделай сам. Stackoverflow предназначен только для решения проблем

Arahasya 27.10.2018 07:45

Сделайте ваше навигационное представление глобальной переменной

Другие вопросы по теме