2015-10-05 19 views
7

Ich bin neu in Android App Entwicklung. Heute habe ich versucht, meine App auf android neues Materialdesign zu aktualisieren. Also habe ich Android Studio (1.4) Navigation Drawer Activity verwendet. Problem ist, ich kann nicht verstehen, wie man Navigationsleiste benutzt, um zwischen meinen actives zu navigieren. Es unterscheidet sich von Online-Tutorials, die ich gesehen habe. Es verwendet keine Fragmente. Ich kann Namen, Symbole ändern usw .. das Problem ist, kann ich nicht verstehen, wie man zwischen den Aktivitäten mit Navigation Schublade navigieren?Android Studio 1.4 Navigationsschublade

danke

public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 

    int id = item.getItemId(); 

    if (id == R.id.nav_camara) { 


    } else if (id == R.id.nav_gallery) { 

    } else if (id == R.id.nav_slideshow) { 

    } else if (id == R.id.nav_manage) { 

    } else if (id == R.id.nav_share) { 

    } else if (id == R.id.nav_send) { 

    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

Antwort

7

Ich hatte das gleiche Problem, aber behoben wurde.

Gehen Sie folgendermaßen vor:

1.open der "content_main.xml" Datei im "Layout" Ordner.

2.use dem folgenden Code:

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     tools:showIn="@layout/app_bar_main" 
     tools:context=".MainActivity">  

     <FrameLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/mainFrame"> 

     </FrameLayout> 

    </RelativeLayout> 
  1. gehen auf die "onNavigationItemSelected" Methode:
public boolean onNavigationItemSelected(MenuItem item) { 

     int id = item.getItemId(); 
     Fragment fragment = new YourFragment(); 

     if (id == R.id.nav_camara) { 

      FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.mainFrame, fragment); 
      ft.commit(); 

     } else if (id == R.id.nav_gallery) { 


     } else if (id == R.id.nav_slideshow) { 


     } else if (id == R.id.nav_manage) { 


     } else if (id == R.id.nav_share) { 


     } else if (id == R.id.nav_send) { 


     } 

     //Close Drawer After Action 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 

     return true; 
+0

Vielen Dank euch beide –

+1

Eigentlich fragte er Navigation Schublade mit Aktivitäten, aber Ihr Code ist mit Fragmente. – oneNiceFriend

0

In diesem Fall ist dies besser ist, Fragmente zu verwenden, für jeden nav Artikel, Ihr aktuelles Fragment in Ihrer Haupttätigkeit ersetzen, wird es einfach zu tun. Siehe Abschnitt Fragmente in Android Dev Guide.

0

Sie können Verwenden Sie die Option "Fragment nicht aktiv", um Inhalte für jede Navigationsoption hinzuzufügen (nachdem Sie mithilfe der Option "Navigationsschubladenaktivität" in Android Studio eine Anwendung erstellt haben). .

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     tools:context="com.example.root.netutility.MainActivity" 
     tools:showIn="@layout/app_bar_main" 
     android:id="@+id/relative_layout_for_fragment"> 

     <!--<TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Hello World!" />--> 
    </RelativeLayout> 

MainActivity.Java (Sie ändern Fragmente wie folgt)

@Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 
     Fragment fragment = null;  
     if (id == R.id.ping_tab) {   
      fragment = new FirstFragment(); 
      toolbar.setTitle("First"); 
     } else if (id == R.id.traceroute_tab) { 
      fragment = new SecondFragment(); 
      toolbar.setTitle("Second"); // if you wan to change title 
     }else if (id == R.id.nav_share) { 
      fragment = new ThirdFragment(); 
     } else if (id == R.id.nav_send) { 
      fragment = new FourthFragment(); 
     } 
     if(fragment != null) { 
      // update the main content by replacing fragments 
      FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction().replace(R.id.relative_layout_for_fragment, fragment).commit(); 
     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 

content_main.xml (: android id = "@ + id/relative_layout_for_fragment" id zu dieser relativen Layout zuzuordnen Beispiel)

Verwandte Themen