2017-03-03 5 views
-3

Ich versuche, Listner zu meinem Navigationsleiste Menüeintrag hinzufügen, aber es funktioniert nicht, bitte überprüfen Sie mein Skript und überprüfen Sie auch dieses Bild [https://www.dropbox.com/s/imzufywwj5qyjlj/Nav_Menu.png?dl=0] Vielen Dank.Hinzufügen von Listener zur Navigationsleiste, Menüeintrag funktioniert nicht

ProfileActivity.java

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

 
     View headerView = navigationView.getHeaderView(0); 
 
     TextView prousername = (TextView) headerView.findViewById(R.id.pro_username); 
 
     TextView promail = (TextView) headerView.findViewById(R.id.pro_mail); 
 
     TextView prophone = (TextView) headerView.findViewById(R.id.pro_phone); 
 

 
     ProDrawareLayout = (DrawerLayout)findViewById(R.id.activity_profile); 
 
     ProToggle = new ActionBarDrawerToggle(this,ProDrawareLayout, R.string.open, R.string.close); 
 

 
     ProDrawareLayout.addDrawerListener(ProToggle); 
 
     ProToggle.syncState(); 
 

 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
 

 
     prousername.setText(SharedPrefManager.getInstance(this).getUsername()); 
 
     promail.setText(SharedPrefManager.getInstance(this).getUserEmail()); 
 
     prophone.setText(SharedPrefManager.getInstance(this).getUserPhone()); 
 

 
     navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
 
      @Override 
 
      public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
 
       Switch(item.getItemId()){ 
 
        case R.id.nav_logout: 
 
         SharedPrefManager.getInstance(this).logOut(); 
 
         finish(); 
 
         startActivity(new Intent(this, MainActivity.class)); 
 
       }

Navigation_menu.xml

<group android:checkableBehavior="single"> 
 
     <item android:id="@+id/nav_account" 
 
      android:title="My account"/> 
 

 
     <item android:id="@+id/nav_settings" 
 
      android:title="Settings"/> 
 

 
     <item android:id="@+id/nav_logout" 
 
      android:title="Log Out"/> 
 
    </group> 
 

 
    <item android:title="Communicate"> 
 
     <menu> 
 
      <item 
 
       android:id="@+id/Rate_id" 
 
       android:title="@string/rate_us" 
 
       android:showAsAction="never"></item> 
 
      <item 
 
       android:id="@+id/Contact_id" 
 
       android:title="@string/contact_us" 
 
       android:showAsAction="never"></item> 
 
      <item 
 
       android:id="@+id/About_id" 
 
       android:title="@string/about_us" 
 
       android:showAsAction="never"></item> 
 
     </menu> 
 
    </item>

activity_profile.xml

<android.support.design.widget.NavigationView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="match_parent" 
 
     app:menu="@menu/navigation_menu" 
 
     android:layout_gravity="start" 
 
     android:background="@color/colorBG" 
 
     app:headerLayout="@layout/navigation_header" 
 
     android:id="@+id/nav_view" > 
 

 
    </android.support.design.widget.NavigationView>

+0

Haben Sie Ihr Problem gelöst? – Cochi

+0

fehlt der Rückgabewert im Switch Fall für Case: 'return true;' –

Antwort

0

Entfernen Sie das obere Gehäuse auf Schaltergehäuse Funktion.

switch statt Switch

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
       Switch(item.getItemId()){ // the issue is here 
        case R.id.nav_logout: 
         SharedPrefManager.getInstance(this).logOut(); 
         finish(); 
         startActivity(new Intent(this, MainActivity.class)); 
       } 

EDIT:

Sie können nicht this wie ein Verweis auf Ihre Aktivität verwenden, da Ihr in diesem Fall in einem OnNavigationItemSelectedListener sind.

Versuchen, die statt:

private Context mContext eine Klasse Feld erstellen. Instanciate mContext auf onCreate Funktion: mContext = this; Verwenden Sie mContext.

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
       @Override 
       public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
        Switch(item.getItemId()){ // the issue is here 
         case R.id.nav_logout: 
          SharedPrefManager.getInstance(mContext).logOut(); 
          finish(); 
          startActivity(new Intent(mContext, MainActivity.class)); 
        } 
+0

bro. immer noch bekomme ich Fehler in der Zeile ".getinstance (this)" und (this, MainActivity.class)) Bitte überprüfen Sie dieses Bild [https://www.dropbox.com/s/u9cyxmvi9rmghyt/Nav_Menu2.png?dl=0] –

+0

Sehen Sie, ob meine Bearbeitung Ihnen helfen kann. – Cochi

+0

Vielen Dank Kumpel. Ich wurde erst seit gestern sauer. ich danke dir sehr. Kann ich dir noch eine Frage stellen? –

Verwandte Themen