2013-06-30 25 views
0

嘿,我想使用DrawerLayoutActionBarSherlok,但我得到的錯誤NavigationDrawer與ActionBarSherlok

06-30 15:37:18.874:E/AndroidRuntime(1305):java.lang中。的RuntimeException:無法啓動活動ComponentInfo {com.Priyesh/com.Priyesh.MainActivity}:android.view.InflateException:二進制XML文件線#1:錯誤充氣類android.support.v4.widget.DrawerLayout

這裏是我的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" > 

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


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

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

package com.example; 

import java.util.ArrayList; 
import android.os.Bundle; 
import android.support.v4.app.ActionBarDrawerToggle; 
import android.support.v4.widget.DrawerLayout; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import com.actionbarsherlock.app.*; 
import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuInflater; 

public class MainActivity extends SherlockActivity { 
DrawerLayout mydrawerlayout; 
ListView drawerlist; 
ArrayList<String> mplanetlist; 
ActionBarDrawerToggle drawer_toggle; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mydrawerlayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawerlist = (ListView) findViewById(R.id.left_drawer); 
drawerlist.setAdapter(newArrayAdapter<String(MainActivity.this,android.R.layout.sim  ple_list_item_2,mplanetlist)); 
    ActionBar actionbar = getSupportActionBar(); 
    actionbar.show(); 
    actionbar.setHomeButtonEnabled(true); 
    actionbar.setDisplayHomeAsUpEnabled(true); 

drawer_toggle=newActionBarDrawerToggle(MainActivity.this,mydrawerlayout,R.drawable.  ic_drawer, R.string.drawer_open , R.string.drawer_close) 
    { 
     public void onDrawerClosed(View view) { 
      getSupportActionBar().setTitle("drawer_open"); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     public void onDrawerOpened(View drawerView) { 
      getSupportActionBar().setTitle("drawer_closse"); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
    }; 

    mydrawerlayout.setDrawerListener(drawer_toggle); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater m = getSupportMenuInflater(); 
    m.inflate(R.menu.main, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 

    return super.onPrepareOptionsMenu(menu); 
} 

}

+0

使用Android SDK Manager並確保在「Tools」 - >「Android SDK Tools」下有Rev. 22.0.1。注意'import com.actionbarsherlock.app。*;' - 通常不是用'。*'導入任何東西的好主意 - 而是導入你需要的單個類。 – Squonk

回答

0

試試這個,讓我知道,如果不解決這個問題:

  • 轉到構建路徑>配置構建路徑>訂購和導出
  • 檢查Android和Android依賴項庫
  • 清理並重建您的項目
+0

我做了你說的。爲了和導出Android的依賴和私人圖書館被檢查 – Priyesh

0

您是否安裝了最新的支持庫?類android.support.v4.widget.DrawerLayout僅在大約一個月前的最新庫(版本13)中。

+0

是的,我有最新的支持庫(v 13)安裝 – Priyesh

1

我剛剛在我的項目上運行了這個程序,這是一個更大的麻煩,因爲我使用的是Maven。

請不要在您的項目中包含支持庫,而應將最新的r13版本替換爲r7版本的ActionBarSherlock lib文件夾中的支持庫。其他人則表示,您需要將私有庫包含在訂單中並導出,這對我來說並不是真的,因爲我使用的是Maven。

This tutorial was helpful in getting ABS and DrawerLayout to work together.

0

我有同樣的問題。所以我使用以下步驟解決它。這對別人很有用。

問題是因爲編譯器在activity_main.xml中搜索drawer_layout

setContentView(R.layout.activity_main); 
//You added the view file as activity_main 

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
//While execution the compiler will search "drawer_layout" in the view file (activity_main.xml). But the drawer_layout is in some other xml file. 

但沒有"drawer_layout"activity_main.xml增加。它添加在其他一些xml文件中

所以,要解決這個問題,我們需要在activity_main.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="@drawable/bff"> 

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


    <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="#111"/> 

<!-- The content in the activity_main.xml --> 

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