2017-02-19 10 views
0

У меня есть 2 Активности в моем проекте. В MainActivity (мое первое действие) есть NavigationDrawer. Я могу получить доступ к гамбургеру, чтобы отобразить пункты меню навигации. Но я хочу получить к нему доступ в свой TrafficActivity. Как я могу добавить значок гамбургера и получить доступ к пункту меню навигации.Как мне получить доступ к меню навигации по существующей активности

MainActivity

TrafficActivity

my.xml

<android.support.design.widget.CoordinatorLayout 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" 
android:fitsSystemWindows="true" 
tools:context="com.example.yunus.ototakip.MainActivity"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

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


<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" 
    app:popupTheme="@style/AppTheme.PopupOverlay" 
    app:titleTextColor="@color/beyaz" 
    app:subtitleTextColor="@color/beyaz"> 

</android.support.v7.widget.Toolbar> 

<include layout="@layout/content_main" /> 

MainActivity.java

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

    @SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

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


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

    } 
    else if (id == R.id.nav_ipucu) 
    { 
     startActivity(new Intent(MainActivity.this,IpuclariSayfasi.class)); 
    } 


    else if (id == R.id.nav_oyla) { 

     } 
    else if (id == R.id.nav_cikis) 
    { 
      //startActivity(new Intent(MainActivity.this,GirisActivity.class)); 
     } 

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

} 
+0

Создайте общий класс активности (скажем: BaseActivity.java), расширив AppCompactActivity.java. Внесите все связанные с ящиком вещи в BaseActivity и расширьте этот класс в MainActivity и TrafficActivity. – Ashiq

+0

Должен ли я делать что-то в файлах xml? –

+0

Вы должны создать отдельный xml – Ashiq

ответ

1

В вашем случае это рекомендовано использовать фрагмент InstEd деятельности:

перемещать все содержимое MainActivity (Содержание середины, не DrawerLayout или NavigationView Материал) к фрагменту имени MainFragment (например):

Добавить frameLayout, чтобы из content_main.xml:

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

И заменить его MainFragment в MainActivity OnCreate:

FragmentManager fm = getFragmentManager(); 
     fm.beginTransaction().replace(R.id.content_frame, new MainFragment()).commit(); 

Создать еще один фрагмент для деятельности IpuclariSayfasi.

OnNavigationItemSelected() заменить MainFragment с IpuclariSayfasi фрагментом:

@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    ....... 

    else if (id == R.id.nav_ipucu) 
    { 
     FragmentManager fm = getFragmentManager(); 
     fm.beginTransaction().replace(R.id.content_frame, new IpuclariSayfasi(), "IpuclariSayfasi").commit();   
    } 

    ....... 

} 

Это стандартная система для использования панели навигации активность.

+0

, но я использую BottomBarNavigation в MainActivity. И я использую FrameLayout для этого. Считаете ли вы, что в этой ситуации все в порядке? –

+0

Да, не проблема. оберните среднее содержимое новым кадром и замените его фрагментом. – tahsinRupam

+0

Спасибо, он работает –

 Смежные вопросы

  • Нет связанных вопросов^_^