2016-06-17 9 views
-1

Ich benutze Android Stduio 2.1. Ich habe eine Navigationsschubladenaktivität erstellt.Android Studio 2.1 NavigationDrawer (Framents)

Wie kann ich andere Aktivitäten oder Fragmente mit dem gleichen Navigationsschublade aufrufen. Aber das Navigationsmenü muss immer noch in jedem Fragment oder Aktivität, die ich anrufe, vorhanden sein. Wie kann ich das schaffen?

Dies ist MainActivity:

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, GPS_Overview2.OnFragmentInteractionListener { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

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

    //GPS AN/AUS Überprüfung 
    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 

    if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){ 
     Toast.makeText(this, this.getText(R.string.GPS_AN) , Toast.LENGTH_SHORT).show(); 
    }else{ 
     showGPSDisabledAlertToUser(); 
    } 
} 

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     super.onBackPressed(); 
    } 
} 

//GPS An Message 
private void showGPSDisabledAlertToUser(){ 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
    alertDialogBuilder.setMessage(getApplicationContext().getString(R.string.GPS_ERROR)) 
      .setCancelable(false) 
      .setPositiveButton(getApplicationContext().getString(R.string.GPS_SETTINGS), 
        new DialogInterface.OnClickListener(){ 
         public void onClick(DialogInterface dialog, int id){ 
          Intent callGPSSettingIntent = new Intent(
            android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
          startActivity(callGPSSettingIntent); 
         } 
        }); 
    alertDialogBuilder.setNegativeButton(getApplicationContext().getString(R.string.cancel), 
      new DialogInterface.OnClickListener(){ 
       public void onClick(DialogInterface dialog, int id){ 
        dialog.cancel(); 
       } 
      }); 
    AlertDialog alert = alertDialogBuilder.create(); 
    alert.show(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == R.id.gps_overview) { 


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

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

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

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

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

    } else if (id == R.id.exit) { 
     System.exit(0); 
    } 

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

} 

Dies ist der activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 

    <FrameLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:focusableInTouchMode="false" /> 

    <include 
     layout="@layout/app_bar_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_main" 
     app:menu="@menu/activity_main_drawer" /> 

</android.support.v4.widget.DrawerLayout> 

Wenn Sie weitere Informationen benötigen nur einen Kommentar schreiben.

Grüße bilden Deutschland

Tim

Antwort

0

Verwenden Intent wenn auf eine andere Tätigkeit

Intent intent = new Intent(CurrentActivity.this,newActivity.class); 

Und

@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == R.id.gps_overview) { 
     startActivity(intent); 
} else if (id == R.id.tachoscheibe) { 

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

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

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

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

} else if (id == R.id.exit) { 
    System.exit(0); 
} 

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

Zum Ändern Fragment Sie Sie können

gehen gehen wollen,
Fragment fragment = null; 
fragmentClass = Fragment.class; 
    try { 
     fragment = (Fragment) fragmentClass.newInstance(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.id.content_fragment, fragment).commit();