2017-02-19 4 views
0

Ich habe 2 Aktivitätseinstellungen in meinem Projekt. Es gibt einen NavigationDrawer in MainActivity (meine erste Aktivität). Ich kann mit dem Hamburger-Symbol auf die Navigationsmenüpunkte zugreifen. Aber ich möchte in meiner TrafficActivity darauf zugreifen. Wie kann ich ein Hamburger-Symbol hinzufügen und auf das Navigationsmenü zugreifen?Wie kann ich auf das Navigationsmenü für vorhandene Aktivität zugreifen?

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

Erstellen Sie eine gemeinsame Aktivitätsklasse (z. B. BaseActivity.java), indem Sie AppCompactActivity.java erweitern. Implementieren Sie alle schubladenbezogenen Elemente in BaseActivity und erweitern Sie diese Klasse in MainActivity und TrafficActivity. – Ashiq

+0

Sollte ich nicht etwas in XML-Dateien tun? –

+0

Sie müssen separate XML – Ashiq

Antwort

1

In Ihrem Fall ist es empfehlenswert ist Fragment zu verwenden insted Aktivität:

verschieben Alle Ihre MainActivity Inhalt (Inhalt der Mitte, nicht DrawerLayout oder NavigationView Stuff) an ein Fragment namens MainFragment (ex):

eine frameLayout zu out content_main.xml hinzufügen:

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

und ersetzen sie durch MainFragment in MainActivity onCreate:

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

Erstellen Sie ein weiteres Fragment für IpuclariSayfasi-Aktivität.

OnNavigationItemSelected() ersetzen MainFragment mit IpuclariSayfasi Fragmente:

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

    ....... 

} 

Dies ist das Standardsystem ist für die Verwendung von Navigationsleiste Aktivität.

+0

erstellen, aber ich verwende BottomBarNavigation in MainActivity. Und ich verwende FrameLayout dafür. Denkst du, dass es für diese Situation in Ordnung ist? –

+0

Ja kein Problem. wrap up mittleren Inhalte mit einem neuen framelayout und ersetzen Sie diese durch ein Fragment. – tahsinRupam

+0

Danke, es funktioniert –

Verwandte Themen