2017-11-03 3 views
1

Hallo ich an einem Programm arbeite und habe eine Navigationsleiste mit der Navigationsleiste Aktivitätsvorlage, die Android Studio bietet Ihnen gemacht, und das ist meine Haupttätigkeit. Ich habe Fragmente verwendet, um zwischen den Seiten in meiner App zu wechseln, aber ich habe die Hauptaktivität als eine der Optionen in der Schublade, aber ich kann nicht herausfinden, wie ich die Hauptaktivität wiederherstellen kann.Wie Android Navigationsleiste zu verwenden, um die Haupttätigkeit zu wechseln

Hier ist die Haupt Activity.java Datei (es für die Organisation umbenannt)

package com.eliteapp.eliteapp_indev; 

import android.app.FragmentManager; 
import android.os.Bundle; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.MenuItem; 

public class your_cmdrs extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.your_cmdrs); 
     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.addDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 


     return super.onOptionsItemSelected(item); 
    } 

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


     } 

     if (id == R.id.GalNet) { 
      setTitle("GalNet"); 
      galnet GalNat = new galnet(); 
      android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction(). replace(R.id.Your_CMDRS, GalNat).commit(); 
     } else if (id == R.id.Market) { 
      setTitle("Market"); 
      market Market = new market(); 
      android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction(). replace(R.id.Your_CMDRS, Market).commit(); 
     } else if (id == R.id.PowerPlay) { 
      setTitle("PowerPlay"); 
      powrplay PowrPlay = new powrplay(); 
      android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction(). replace(R.id.Your_CMDRS, PowrPlay).commit(); 


     } else if (id == R.id.ship_fitting) { 
      setTitle("Ship Fitting's"); 
      ship_fitting Ship_Fitting = new ship_fitting(); 
      android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction(). replace(R.id.Your_CMDRS, Ship_Fitting).commit(); 
     } else if (id == R.id.About) { 
      setTitle("About"); 
      about About = new about(); 
      android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction(). replace(R.id.Your_CMDRS, About).commit(); 
     } else if (id == R.id.Settings) { 
      setTitle("Settings"); 
      settings Settings = new settings(); 
      android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction(). replace(R.id.Your_CMDRS, Settings).commit(); 
     } else if (id == R.id.Change_Log) { 
      setTitle("Change Log"); 
      change_log Chagne_Log = new change_log(); 
      android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction(). replace(R.id.Your_CMDRS, Chagne_Log).commit(); 
     } 

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

und hier ist die content_Main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 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/Your_CMDRS" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.eliteapp.eliteapp_indev.your_cmdrs" 
    tools:showIn="@layout/app_bar_your_cmdrs"> 

</android.support.constraint.ConstraintLayout> 

Datei Wenn jemand mir dabei helfen könnte, das wäre groß.

Antwort

0

bearbeiten

Hoffnung diese Erklärung Sie :) hilft:

Ich schaffte es, indem Sie diesen Code in die if-Anweisung in meiner main.java Datei zu arbeiten.

} else if (id == R.id.Your_CMDRS) { 
      Intent your_cmdrs = new Intent(this, your_cmdrs.class); 
      startActivity(your_cmdrs); 

Jetzt funktioniert es, aber es gibt eine Verzögerung, wenn ich auf die Aktivität zurückschalten und ich kann sogar schalten, auch wenn ich auf der Haupttätigkeit am

Hier ist ein Video davon: https://youtu.be/lQ93OeZDxIY

Ich denke, das ist zu tun, dass es eine Aktivität und kein Fragment ist, aber ich bin mir nicht sicher.

+0

Warum rufen Sie Aktivität aus derselben Aktivität an? –

+0

Ich nenne es so, wenn ich die Sache des Ihre CMDR drücken in der Nav Schublade dann es mich zur Haupttätigkeit zurücknimmt (in diesem Fall Your_CMDRS). – AJok1776

+0

Sie sollten versuchen, ein neues Fragment zu erstellen und es aufzurufen –

0

@ AJok1776 Ich habe das gleiche Problem.

Eine Lösung ist die Erstellung eines MainFragment.java gleichen Inhalts wie MainActivity (ohne Navigationsschublade) Standardmäßig wird die MainFragment-Seite geladen.

MainActivity Inhalt ist der einzige Navigations-Schubladencode.

Fügen Sie dann die Home-Schaltfläche (oder andere) in der Schublade hinzu, wenn der Benutzer auf die Startseite klickt, um die MainFragment-Seite umzuleiten.

Verwandte Themen