La fenêtre des éléments OnNavigationItemSelectedListener pas être appelé
Je suis en train d'utiliser la fenêtre des éléments
à partir de Android à l'Appui de la Conception de la bibliothèque de mon application. Pour une raison quelconque, OnNavigationItemSelected
auditeur n'est pas appelée. Voici mon code
De L'Activité Mise En Page
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer_menu" />
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.DrawerLayout>
Activité onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutID());
toolbar = (Toolbar) findViewById(R.id.activity_toolbar);
setSupportActionBar(toolbar);
toolbar.inflateMenu(R.menu.common_menu);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu_white_24dp);
actionBar.setDisplayHomeAsUpEnabled(true);
}
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(final MenuItem menuItem) {
Snackbar.make(contentLayout, menuItem.getTitle() + " pressed", Snackbar.LENGTH_LONG).show();
menuItem.setChecked(true);
//allow some time after closing the drawer before performing real navigation
//so the user can see what is happening
drawerLayout.closeDrawer(GravityCompat.START);
mDrawerActionHandler.postDelayed(new Runnable() {
@Override
public void run() {
navigate(menuItem.getItemId());
}
}, DRAWER_CLOSE_DELAY_MS);
drawerLayout.closeDrawers();
return true;
}
});
usernameTextView = (TextView) findViewById(R.id.drawer_header_username);
usernameTextView.setText(getAppDContext().getAccount().getUsername());
}
Est-il une raison pour mettre l'auditeur deux fois sur la fenêtre des éléments?
Oups. Collé mauvais code ici. Corrigés. Merci pour le tuyau.
Post votre entière disposition
Oups. Collé mauvais code ici. Corrigés. Merci pour le tuyau.
Post votre entière disposition
OriginalL'auteur NinjaCoder | 2015-07-14
Vous devez vous connecter pour publier un commentaire.
Lorsque vous faites XML de mise en page, vous devez écrire
NavigationView
après BaseLayout (FrameLayout
,LinearLayout
, etc..)Rockstar réponse.. merci
Wow. J'ai été à la recherche pendant des heures. Je vous remercie.
Cette correction d'un problème que j'ai eu lors de la sortie d'une vidéo en plein écran dans une
WebView
à l'aide de la touche retour. LeFrameLayout
a été inscrit après leNavigationView
dans mon fichier XML, et même si elle a été définie comme la visibilitéGONE
il était encore couvert lesNavigationView
et de prévention de la touche.MERCI!!!!!!!!!!!!!!!!!
OriginalL'auteur 이종일
pour moi, cela a fait l'affaire!
la fenêtre des éléments = (la fenêtre des éléments) findViewById(R. id.nav_view);
la fenêtre des éléments.bringToFront();
OriginalL'auteur niva
Votre activité principale mise en page devrait ressembler à ceci:
Dans cette la fenêtre des éléments, j'liés header.xml et menu_drawer.xml (dans le menu de dossier)
par exemple menu_drawer.xml :
que votre code java:
Vérifier si ce travail pour vous. Dans mon projet fonctionne comme un charme.
OriginalL'auteur Fares