2015-10-05 14 views
7

Jestem nowy w rozwoju aplikacji na Androida. Dzisiaj próbowałem zaktualizować moją aplikację do nowego materiału na Androida. Tak więc użyłem aktywności szuflady nawigacji w studio na Androida (1.4). Problem polega na tym, że nie rozumiem, jak korzystać z paska nawigacyjnego, aby nawigować między aktywnymi elementami. Różni się od samouczków online, które widziałem. Nie korzysta z Fragmentów. Mogę zmieniać nazwy, ikony ... itd. Problem polega na tym, że nie rozumiem, jak poruszać się między działaniami za pomocą szuflady nawigacyjnej?Android Studio 1.4 szuflada nawigacji

dziękuję

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; 
} 

Odpowiedz

7

Miałem ten sam problem, ale został naprawiony.

Postępuj zgodnie z poniższymi wskazówkami:

1.open na "content_main.xml" plik znajduje się w folderze "Layout".

2.Wykorzystanie poniższy kod:

<?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. przejść do "onNavigationItemSelected" metody:
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

Dziękuję wam, –

+1

W rzeczywistości poprosił o szufladę nawigacyjną z działaniami, ale twój kod zawiera Fragmenty. – oneNiceFriend

0

W tym przypadku, to lepiej jest użyć fragmentów, dla każdej pozycji nav, zastąpić bieżący fragment w swojej głównej działalności, będzie to proste do zrobienia. Zobacz sekcję fragmentów w przewodniku dla programistów Androida.

0

Można lepiej użyć fragmentu, a nie działania, aby dodać zawartość do każdej opcji nawigacji (po utworzeniu aplikacji za pomocą opcji Aktywność szuflady nawigacji w Android Studio) .

content_main.xml (przypisanie identyfikatora tego względnego układ, przykład: Android id = "@ + Id/relative_layout_for_fragment")

<?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 (możliwość zmiany fragmenty jak to)

@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; 
    } 
Powiązane problemy