у меня есть карта активности. и у него есть панель навигации. но когда я нажимаю на любой из элементов навигации, я не могу перейти к другому действию. Прилагаю сюда свой код. ошибок нет. Когда я щелкаю любой элемент панели навигации, он не перемещается в другое действие.
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);
}
}
Вы уверены, что это HomeActivity? Вместо этого попробуйте getActivity
Ошибки нет. Когда я щелкаю любой элемент в панели навигации, мне нужно перейти к другому действию. Я добавил случай переключателя и намерение внутрь, но когда я нажимаю, ничего не происходит
@Arahasya HomeActivity - моя текущая деятельность
@AseelAli, ваш код выглядит нормально ... вам нужно отладить свой код и проверить, что все действия зарегистрированы в файле манифеста. Также проверьте свою текущую активность, т.е. убедитесь, что это HomeActivity.
Вы не закрываете ящик stackoverflow.com/a/22467742/10290109
@RishavSingla да, я проверил. все еще не работает
@Arahasya Я сделал .. все еще не работает
поделитесь своим кодом на github, чтобы я мог его проверить
@Arahasya Я не знаю, как делиться кодом на github. Но я могу поделиться кодом или всем проектом через Google Drive. Это нормально?
Да ладно, поделись
@Arahasya drive.google.com/file/d/1ig85OXSI4lgG7FVie2adT36vhAd8pdZW/…
you need to
return true
in end ofonNavigationItemSelected
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
}
});
Комментарии не подлежат расширенному обсуждению; этот разговор был переехал в чат.
Попробуй это
Я использую метод прямого щелчка по выбранному элементу, подобный этому
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;
}
Я не использую прослушиватель щелчков ящика.
все работает нормально, пожалуйста, попробуйте
вы закрыли ящик прямо здесь. это макет ящика, который вы закрываете?
Все еще не получается
После тщательного изучения вашего полного кода я понял, что .setNavigationItemSelectedListener не вызывается. Даже если ящик отображался, это было позади вашей деятельности. Значит, вы на самом деле не нажимали на нее.
Итак, простое решение:
nv.bringToFront();
Поместите это после инициализации nv
Также щелкните стрелку вверх, если ответ оказался для вас полезным.
мне нужна еще одна помощь
Привет, мне нужна помощь. У меня есть задание, которое содержит карту и уведомления. Поэтому, когда я перехожу к этому занятию, я хочу отобразить наложенное изображение с 4 кнопками изображения в нем. Перед доступом к карте. Ниже я прикреплю ссылку на скриншот с Google Диска. Пожалуйста, помогите
так в чем проблема
Я не знаю, как добавить изображение, наложив на него 4 кнопки изображения.
Тогда погуглите. Сначала сделай сам. Stackoverflow предназначен только для решения проблем
Сделайте ваше навигационное представление глобальной переменной
не могли бы вы сказать мне ошибку, что у вас есть