2015-07-02 33 views
-2

我在Android Studio中遵循Slidnerd的材質設計教程,我被困在導航抽屜裏。Android Studio導航抽屜找不到符號變量mDrawerLayout或KEY_USER_LEARNED_DRAWER

這裏是我的NavigationDrawerFragment.java

  package com.example.baumann.perfectposture; 


      import android.content.Context; 
      import android.content.SharedPreferences; 
      import android.os.Bundle; 
      import android.support.v4.app.Fragment; 
      import android.support.v4.widget.DrawerLayout; 
      import android.support.v7.app.ActionBarDrawerToggle; 
      import android.support.v7.widget.Toolbar; 
      import android.view.LayoutInflater; 
      import android.view.View; 
      import android.view.ViewGroup; 
      import android.content.ComponentName; 
      import android.content.Intent; 
      import android.graphics.drawable.Drawable; 
      import android.os.Bundle; 
      import android.os.Handler; 
      import android.support.v4.app.Fragment; 
      import android.support.v4.app.FragmentManager; 
      import android.support.v4.app.FragmentStatePagerAdapter; 
      import android.support.v4.view.ViewPager; 
      import android.support.v4.widget.DrawerLayout; 
      import android.support.v7.app.ActionBarActivity; 
      import android.support.v7.widget.Toolbar; 
      import android.view.Menu; 
      import android.view.MenuItem; 
      import android.view.View; 
      import android.view.ViewGroup; 
      import android.widget.ImageView; 


      /** 
      * A simple {@link Fragment} subclass. 
      */ 
      public class NavigationDrawerFragment extends Fragment { 

       public static final String PREF_FILE_NAME="testpref"; 
       public static final String KEY_USER_LEARNED_DRAWER="user_learned_drawer"; 
       private ActionBarDrawerToggle mDrawerToggle; 

       private boolean mUserLearnedDrawer; 
       private boolean mFromSavedInstanceState; 

       public NavigationDrawerFragment() { 
        // Required empty public constructor 
       } 

       @Override 
       public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        mUserLearnedDrawer=Boolean.valueOf(readFromPreferences(getActivity().KEY_USER_LEARNED_DRAWER,"false")); 
        if(savedInstanceState==null){ 
         mFromSavedInstanceState=true; 
        } 
       } 

       @Override 
       public View onCreateView(LayoutInflater inflater, ViewGroup container, 
             Bundle savedInstanceState) { 
        // Inflate the layout for this fragment 
        return inflater.inflate(R.layout.fragment_navigation_drawer, container, false); 
       } 


       public void setUp(DrawerLayout drawerLayout, Toolbar toolbar) { 
        mDrawerLayout = drawerLayout; 
        mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_closed) { 
         @Override 
         public void onDrawerOpened(View drawerView) { 
          super.onDrawerOpened(drawerView); 
         } 

         @Override 
         public void onDrawerClosed(View drawerView) { 
          super.onDrawerClosed(drawerView); 
         } 
        }; 
        mDrawerLayout.setDrawerListener(mDrawerToggle); 

       } 
        public static void saveToPreferences(Context context, String preferenceName, String preferenceValue){ 
         SharedPreferences sharedPreferences=context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE); 
         SharedPreferences.Editor editor=sharedPreferences.edit(); 
         editor.putString(preferenceName, preferenceValue); 
         editor.apply(); 
        } 
        public static String readFromPreferences(Context context, String preferenceName, String defaultValue) { 
         SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE); 
         return sharedPreferences.getString(preferenceName,defaultValue); 
        } 

      } 

這裏是得到了強調:

"KEY_USER_LEARNED_DRAWER"在:

mUserLearnedDrawer=Boolean.valueOf(readFromPreferences(getActivity().KEY_USER_LEARNED_DRAWER,"false"));

"mDrawerLayout"ŧ WICE在:

mDrawerLayout = drawerLayout;

mDrawerLayout.setDrawerListener(mDrawerToggle);

這裏是我的三個錯誤:

Error:(52, 77) error: cannot find symbol variable KEY_USER_LEARNED_DRAWER Error:(67, 9) error: cannot find symbol variable mDrawerLayout Error:(79, 9) error: cannot find symbol variable mDrawerLayout

+0

請注意readFromPreferences(getActivity(),KEY_USER_LEARNED_DRAWER,「false」)方法的簽名。 mDrawerLayout引用不存在,您需要在片段類Private DrawerLayout mDrawerLayout;中聲明一個字段。 – Luksprog

回答

1
  1. 變化 「」 getActivity()成 「」 mUserLearnedDrawer=Boolean.valueOf(readFromPreferences(getActivity(),KEY_USER_LEARNED_DRAWER,"false"));

  2. 後聲明一個場private DrawerLayout mDrawerLayout;您可以分配給drawerLayout。

+0

唉!完美的作品。感謝幫助隊友! –

+0

@KerryBaumann請接受帖子作爲答案,請! – Pfennigbaum

+0

@KerryBaumann「唉」的意​​思是「不幸」:)另外 - 請接受Pfennigbaum的回答。 –