2013-06-30 2 views
0

Эй, я пытаюсь использовать DrawerLayout с ActionBarSherlok, но я получаю сообщение об ошибкеNavigationDrawer с ActionBarSherlok

06-30 15: 37: 18.874: E/AndroidRuntime (1305): java.lang. RuntimeException: Невозможно запустить активность ComponentInfo {com.Priyesh/com.Priyesh.MainActivity}: android.view.InflateException: Binary 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 и убедитесь, что в разделе «Инструменты» -> «Android SDK Tools» у вас есть Rev. 22.0.1. На стороне примечание 'import com.actionbarsherlock.app. *;' - обычно не рекомендуется импортировать что-либо, используя '. *' - импортировать отдельные классы, которые вам нужны. – Squonk

ответ

0

Попробуйте это и дайте мне знать, если это не решает проблему:

  • Перейти к Build Path> Configure Build Path> Заказ и экспорт
  • Проверить библиотеки Android и Android Dependencies
  • Очистка и восстановление вашего проекта
+0

Я сделал то, что сказал. В порядке и Экспорт зависимостей Android и частных библиотек отмечен – Priyesh

0

У вас установлена ​​последняя библиотека поддержки? Класс android.support.v4.widget.DrawerLayout находится только в последней библиотеке примерно месяц назад (версия 13).

+0

Да, у меня установлена ​​последняя библиотека поддержки (v 13) – Priyesh

1

Я только что запустил этот проект, что было еще более сильной болью, потому что я использую Maven.

Не включайте библиотеку поддержки в свой проект, но замените библиотеку поддержки в папке ActionBarSherlock lib, которая является r7, с новейшей версией r13. Другие заявили, что вам нужно включить частные библиотеки в порядок и экспортировать, а это не относится ко мне, потому что я использую Maven.

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

0

У меня была такая же проблема. Поэтому я решил это, выполнив следующие шаги. Это будет полезно для других.

Проблема в том, что компилятор ищет drawer_layout в activity_main.xml.

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> 
Смежные вопросы