0

Bonjour Je souhaite créer un événement de clic avec Navigation Drawer Activity dans Android Studio. Lorsque je clique sur Galerie dans le menu de gauche, je l'ai redirigé vers l'activité Galerie avec intention. C'est ok, ça marche mais il n'y a pas de menu de gauche dans l'activité Galerie. Je veux que toutes les activités redirigées aient quitté le menu. Comment puis-je faire ceci?Navigation Drawer - L'activité redirigée n'a pas de menu de gauche

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.view.View; 
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.Menu; 
import android.view.MenuItem; 

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 

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

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

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

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


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

      // Handle the camera action 
     } else if (id == R.id.nav_gallery) { 
      Intent intent = new Intent(MainActivity.this, GalleryActivity.class); 
      startActivity(intent); 
     } else if (id == R.id.nav_slideshow) { 
Intent intent = new Intent(MainActivity.this, Slideshow.class); 
      startActivity(intent); 
     } 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; 
    } 
} 

Je ne changé cela avec l'ajout d'intention line.Everything autre est le code par défaut lorsque j'ai choisi NavigationDrawerActivity.

public class GalleryActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_gallery); 
} 
} 

Galerie mise en page

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 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:orientation="vertical" 
tools:context="com.example.gamze.leftmenu05.GalleryActivity"> 


<EditText 
    android:id="@+id/editText" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:inputType="textPersonName" 
    android:text="Name" /> 

<Button 
    android:id="@+id/button" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Button" /> 

</LinearLayout> 

Répondre

1

Oui, vous pouvez le faire avec des activités aussi. Comme les activités sont un peu dures ou lourdes dans le cas d'une vue de chargement et d'un écran fixe. C'est pourquoi les fragments sont principalement préférés avec le tiroir de navigation.

Vous pouvez faire

  • Créer une activité de base qui ont tiroir et étendre cette activité reste des activités. vous pouvez vérifier l'implémentation here et here
  • La 2ème option peut être créer l'activité principale avec le tiroir de navigation et dans la partie de contenu de ce chargement tous les fragments du menu. Pour cela, vous pouvez vérifier here
+0

De cette façon, vous gonflez chaque fois un nouveau menu de tiroir, ce qui est très inefficace à mon humble avis. – Fabio

+0

@Fabio Non, cela ne se produira pas car l'activité de base restera en mémoire, donc elle ne se chargera plus et la vue ne sera pas recréée. – androidnoobdev

+0

ah ok, parfait. J'utilise toujours des fragments dans de tels cas, mais bon à savoir :) – Fabio

0

Parce que votre GalleryActivity a une autre disposition.

Si vous souhaitez conserver tout, mais le contenu de la fenêtre principale Je vous suggère d'utiliser un fragment pour la galerie au lieu d'une activité

+0

Je veux utiliser l'activité. C'est possible? Je veux appliquer ceci mon application et il a des activités. –