Android Studio 1.4 Navigation Drawer

Я новичок в разработке Android-приложений. Сегодня я попытался обновить свое приложение до разработки нового дизайна Android. Поэтому я использовал Android Drawer Activity (1.4) для Android. Проблема в том, что я не могу понять, как использовать навигационную панель для навигации между моими активами. Это отличается от онлайн-учебников, которые я видел. Он не использует Фрагменты. Я могу изменить имена, значки и т. Д. Проблема в том, что я не могу понять, как перемещаться между действиями с помощью навигационного ящика?

Спасибо

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

У меня была такая же проблема, но она исправлена.

Выполните следующие действия:

1. Откройте файл «content_main.xml», расположенный в папке «layout».

2. Используйте приведенный ниже код:

 <?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. Перейдите к методу onNavigationItemSelected:
  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; 

В этом случае лучше использовать фрагменты, для каждого элемента навигации, заменить текущий фрагмент в основной деятельности, это будет просто сделать. См. Раздел фрагментов в руководстве разработчика Android.

Вы можете лучше использовать фрагмент без активности для добавления контента для каждой опции навигации. (После создания приложения с использованием параметра «Активность навигационного ящика» в Android Studio).

Content_main.xml (присвойте id этому относительному расположению, Пример: 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 (Вы изменяете фрагменты, подобные этому)

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