2013-07-19 11 views
43

Yandan gezinme yapmak için yeni DrawerLayout kullanıyorum. Ben backstack bir Fragment eklerken, tekrar geri okuna görüntülemek istediğiniz, ancakÇekmece simgesini değiştir arka arkaya ok

@Override 
protected void onStart() { 
    super.onStart(); 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.activity_main_drawerlayout); 
    mDrawerToggle = new ActionBarDrawerToggle(
      this, 
      mDrawerLayout, 
      R.drawable.ic_navigation_drawer, 
      R.string.app_name, 
      R.string.app_name); 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

    getActionBar().setDisplayHomeAsUpEnabled(true); 
    getActionBar().setHomeButtonEnabled(true); 
} 

, böylece kullanıcı geri gidebilir: Böyle çekmecesi simgesini ('hamburger') kullanıyorum "ev" ve sadece uygulama çekmecesini açın.

Çekmece simgesini arka plana nasıl sıfırlayabilirim?
ok istediğim:

Navigation Drawer

+1

burada http://stackoverflow.com/a/29292130/746347 Yanıtımı – mixel

cevap

71

Sadece görünüm durumunu güncellemek için barındırma etkinliği için bir arayüz oluşturdu

mDrawerToggle.setDrawerIndicatorEnabled(false); 
+2

, yani çalışır, büyük teşekkür bakın! – nhaarman

+3

Teşekkürler, ayrıca mDrawerToggle.setDrawerIndicatorEnabled (false) sonrası tıklama eyleminin nasıl uygulanacağını da söyleyebilir misiniz? İçerik ayrıntısı parçasından liste görünümüne geri dönmeye çalışıyorum. P.S: Geri düğmesini kullanarak önceki parçaya gidebilirim. – adnanyousafch

+2

@adnanyousafch http://stackoverflow.com/questions/17258020/switching-between-android-navigation-drawer-image-and-up-carat-when-using-fragme –

2

diyoruz, DrawerToggle "Hamburger" devre dışı bırakmak ve gizlemek için hamburger menüsü. Üst düzey parçalar için geçişi true olarak ayarlıyorum ve < yukarı okunu görüntülemek istediğim parçalar için geçişi false olarak ayarlıyorum.

benim Faaliyeti Sonra
public class SomeFragment extends Fragment { 

    public interface OnFragmentInteractionListener { 
     public void showDrawerToggle(boolean showDrawerToggle); 
    } 

    private OnFragmentInteractionListener mListener; 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     try { 
      this.mListener = (OnFragmentInteractionListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() + " must implement OnFragmentInteractionListener"); 
     } 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     mListener.showDrawerToggle(false); 
    } 
} 

...

public class MainActivity extends Activity implements SomeFragment.OnFragmentInteractionListener { 

    private ActionBarDrawerToggle mDrawerToggle; 

    public void showDrawerToggle(boolean showDrawerIndicator) { 
     mDrawerToggle.setDrawerIndicatorEnabled(showDrawerIndicator); 
    } 

} 
+1

Bu 'jenerik'i nasıl yapabilirim, bu yüzden' SomeFragment' gibi birçok sınıfa uygulanır? Yoksa 'MainActivity' her birini ayrı ayrı uygulamak zorunda mı? – IanB

+0

@IanB, bence örneğin BaseFragment için someclass oluşturmalı, o kodu uygulamalı, sonra bu arayüzü kullanmak istediğiniz her parçayı Base Fragment ile genişletmeliyim. – WardaLyn

İlgili konular