2015-07-17 5 views
6

मैं नेविगेशन ड्रॉर और इसलिए नहीं कर सकते उपयोग के लिए एक Fragement उपयोग कर रहा हूँ syncStateहैम्बर्गर चिह्न मार्गदर्शक ड्रॉवर टुकड़ा में प्रदर्शित नहीं करता है

public class NavigationDrawerFragment extends Fragment{ 
.... 

avctivityCreated पर syncState() कॉलिंग

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    // Indicate that this fragment would like to influence the set of actions in the action bar. 
    setHasOptionsMenu(true); 
    mDrawerToggle.syncState(); 
} 

का उपयोग कॉल करने के लिए onPostCreated आइकन के लिए ic_drawer

public void setUp(int fragmentId, DrawerLayout drawerLayout) { 
    mFragmentContainerView = getActivity().findViewById(fragmentId); 
    mDrawerLayout = drawerLayout; 

    // set a custom shadow that overlays the main content when the drawer opens 
    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 
    // set up the drawer's list view with items and click listener 

    ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    actionBar.setHomeButtonEnabled(true); 

    // ActionBarDrawerToggle ties together the the proper interactions 
    // between the navigation drawer and the action bar app icon. 
    mDrawerToggle = new ActionBarDrawerToggle(
      getActivity(),     /* host Activity */ 
      mDrawerLayout,     /* DrawerLayout object */ 
      R.drawable.ic_drawer,    /* nav drawer image to replace 'Up' caret */ 
      R.string.navigation_drawer_open, /* "open drawer" description for accessibility */ 
      R.string.navigation_drawer_close /* "close drawer" description for accessibility */ 
    ) { 
     @Override 
     public void onDrawerClosed(View drawerView) { 
      super.onDrawerClosed(drawerView); 
      if (!isAdded()) { 
       return; 
      } 

      getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu() 
     } 

     @Override 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      if (!isAdded()) { 
       return; 
      } 

      if (!mUserLearnedDrawer) { 
       // The user manually opened the drawer; store this flag to prevent auto-showing 
       // the navigation drawer automatically in the future. 
       mUserLearnedDrawer = true; 
       SharedPreferences sp = PreferenceManager 
         .getDefaultSharedPreferences(getActivity()); 
       sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply(); 
      } 

      getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu() 
     } 


    }; 

गलत क्या पता नहीं लगा सकता है। कृपया

उत्तर

13

मुझे यह समस्या भी थी। मेरे लिए, android.support.v4.app.ActionBarDrawerToggle के बजाय android.support.v7.app.ActionBarDrawerToggle आयात करना इसे ठीक किया गया है। तुम भी R.drawable.ic_drawer तर्क को दूर करने के लिए जब आप mDrawerToggle को परिभाषित किया है:

mDrawerToggle = new ActionBarDrawerToggle( getActivity(), mDrawerLayout, R.string.navigation_drawer_open, R.string.navigation_drawer_close )

यदि वह काम नहीं करता है, this question के जवाब में से कुछ की कोशिश करो।

+0

मैं android.support.v7 उपयोग कर रहा हूँ यह होना चाहिए था। app.ActionBarDrawerToggle लेकिन कोई भाग्य कोई विचार नहीं है? – Suchith

+2

@ सुचिथ मुझे सहेजने की समस्या हो रही थी, मैं पोस्टस्टेट (गलत बंडल सहेजे गए इंस्टेंटस्टेट, पर्सिस्टेबलबंडल पर्सिस्टेंटस्टेट) पर गलत सार्वजनिक शून्य को ओवरराइड कर रहा था, इसे पोस्टस्टेट (बंडल सेव किया गया इंस्टेंसस्टेट) पर सुरक्षित रखा जाना चाहिए – aglour

+0

यह मेरा काम नहीं करता है हालांकि मेरा कोड और तर्क बहुत समान है सवाल के लिए। लेकिन मैं इस लाइन अंतर है: 'mActionBarDrawerToggle = नए ActionBarDrawerToggle (getActivity(), mDrawerLayout, उपकरण पट्टी, R.string.navigation_drawer_open, R.string.navigation_drawer_item_close)' – blueware

6

स्वीकार किए जाते हैं जवाब मेरे लिए यह हल नहीं किया गया था, मुझे पता चला मैं onPostCreate

@Override 
public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) { 
    super.onPostCreate(savedInstanceState, persistentState); 
    mDrawerToggle.syncState(); 
} 

के लिए गलत ओवरराइड

@Override 
public void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    mDrawerToggle.syncState(); 
} 
+2

हाँ मैंने किया वह भी, लेकिन अभी भी –

+0

फिर भी काम नहीं कर रहा काम नहीं कर रहा मेरे लिए। – blueware

संबंधित मुद्दे

 संबंधित मुद्दे