2014-11-11 3 views
0

안녕하세요 한 탐색 서랍 때 개방 와이프 ---> 실행 신을 가지고 있지만, 내가 작업 표시 줄에서 터치하면이 응용 프로그램은 깨진탐색 창 오류

내 XML :

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#ffffff" > 

    <!-- Framelayout to display Fragments --> 

    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <!-- Listview to display slider menu --> 

    <LinearLayout 
     android:id="@+id/left_drawer_s" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:orientation="vertical" > 

     <LinearLayout 
      android:id="@+id/drawers" 
      android:layout_width="240dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="start" 
      android:background="@color/REDAR_COLOR" 
      android:gravity="center_vertical" 
      android:orientation="horizontal" > 

      <ImageView 
       android:layout_width="80dp" 
       android:layout_height="80dp" 
       android:paddingLeft="20dp" 
       android:src="@drawable/ic_launcher" /> 

      <LinearLayout 
       android:id="@+id/drawer" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="10dp" 
       android:background="@color/REDAR_COLOR" 
       android:orientation="vertical" > 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:gravity="center" 
        android:text="Shohel Rana" 
        android:textSize="14sp" /> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:gravity="center" 
        android:text="[email protected]" 
        android:textSize="14sp" /> 
      </LinearLayout> 
     </LinearLayout> 

     <ListView android:id="@+id/left_drawer" 
      android:layout_width="240dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      android:choiceMode="singleChoice" 
      android:divider="@android:color/transparent" 
      android:dividerHeight="0dp" 
      android:background="#fff"/> 
    </LinearLayout> 

</android.support.v4.widget.DrawerLayout> 

그리고 자바에서 내 클래스 : 콘솔

private DrawerLayout mDrawerLayout; 
    private ListView mDrawerList; 
    private ActionBarDrawerToggle mDrawerToggle; 

    private CharSequence mDrawerTitle; 
    private CharSequence mTitle; 
    private String[] nav_options; 

    private int restaurant_user_id = 0; 
    int position= 0; 

    public static drawer_menu drawer_menu_activity; 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 


      setContentView(R.layout.drawer_menu); 

      drawer_menu_activity = this; 


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


      nav_options = getResources().getStringArray(R.array.nav_options); 
      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
      mDrawerList = (ListView) findViewById(R.id.left_drawer); 

      // Set the adapter for the list view 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, nav_options); 

      mDrawerList.setAdapter(adapter); 

      // Set the list's click listener 
      mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

      position = 1; 

      selectItem(position,restaurant_user_id); 


      mDrawerToggle = new ActionBarDrawerToggle(
        this,     /* host Activity */ 
        mDrawerLayout,   /* DrawerLayout object */ 
        R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */ 
        R.string.hello_world, /* "open drawer" description */ 
        R.string.hello_world /* "close drawer" description */ 
      ) { 

       /** Called when a drawer has settled in a completely closed state. */ 
       public void onDrawerClosed(View view) { 
        super.onDrawerClosed(view); 
        invalidateOptionsMenu(); 
       } 

       /** Called when a drawer has settled in a completely open state. */ 
       public void onDrawerOpened(View drawerView) { 
        super.onDrawerOpened(drawerView); 
        invalidateOptionsMenu(); 
       } 
      }; 

     } 

     @Override 
     protected void onPostCreate(Bundle savedInstanceState) { 
      super.onPostCreate(savedInstanceState); 
      // Sync the toggle state after onRestoreInstanceState has occurred. 
      mDrawerToggle.syncState(); 
     } 

     @Override 
     public void onConfigurationChanged(Configuration newConfig) { 
      super.onConfigurationChanged(newConfig); 
      mDrawerToggle.onConfigurationChanged(newConfig); 
     } 


     /* The click listner for ListView in the navigation drawer */ 
     private class DrawerItemClickListener implements ListView.OnItemClickListener { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       selectItem(position,restaurant_user_id); 

      } 
     } 

     private void selectItem(int position, int restaurant_user_id) { 


      mDrawerLayout.closeDrawers(); 

      Bundle args = new Bundle(); 
      args.putInt("restaurant_user_id", restaurant_user_id); 
      args.putString("WEB_URL", WEB_URL); 

      switch (position){ 
       case 0: 
        Log.v("POSITION" , "ES 0"); 
        position=0; 
        Fragment main= new main(); 
        main.setArguments(args); 
        FragmentManager fragmentManager_main = getFragmentManager(); 
        fragmentManager_main.beginTransaction().replace(R.id.content_frame, main).commit(); 
        break; 
       case 1: 
        Log.v("POSITION" , "ES 1"); 
        position=1; 
        Fragment detail = new comments(); 
        detail.setArguments(args); 
        FragmentManager fragmentManager = getFragmentManager(); 
        fragmentManager.beginTransaction().replace(R.id.content_frame, detail).commit(); 
        break; 
      } 

     } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       mDrawerLayout.openDrawer(mDrawerList); 
       mDrawerLayout.invalidate(); 
       return true; 
      default: return super.onOptionsItemSelected(item); 
     } 
    } 

로그

11-11 09:42:00.414 10471-10471/mx.clai.redar.redarmanager E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams 
      at android.support.v4.widget.DrawerLayout.isDrawerView(DrawerLayout.java:968) 
      at android.support.v4.widget.DrawerLayout.openDrawer(DrawerLayout.java:1129) 
      at mx.clai.redar.redarmanager.drawer_menu.onOptionsItemSelected(drawer_menu.java:204) 
      at android.app.Activity.onMenuItemSelected(Activity.java:2610) 
      at com.android.internal.widget.ActionBarView$3.onClick(ActionBarView.java:243) 
      at android.view.View.performClick(View.java:4421) 
      at android.view.View$PerformClick.run(View.java:18190) 
      at android.os.Handler.handleCallback(Handler.java:725) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:175) 
      at android.app.ActivityThread.main(ActivityThread.java:5279) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
      at dalvik.system.NativeStart.main(Native Method) 
입니다

콘솔 시장은 drawer_menu.java:204은 다음과 같습니다

`mDrawerLayout.openDrawer(mDrawerList);` 

도와주세요, 감사합니다! 작동해야

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Pass the event to ActionBarDrawerToggle, if it returns 
    // true, then it has handled the app icon touch event 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    // Handle your other action bar items... 

    return super.onOptionsItemSelected(item); 
} 

:

답변

1

시도는 onOptionsItemSelected 방법을 변경합니다.