0

DrawerLayoutActionBarSherlokで使用しようとしていますが、エラーが発生しています

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);
}

}

4

4 に答える 4

1

これを自分のプロジェクトで実行したところですが、Maven を使用しているため、これはさらに大きな苦痛でした。

サポート ライブラリをプロジェクトに含めないでください。ただし、r7 である ActionBarSherlock lib フォルダー内のサポート ライブラリを最新の r13 バージョンに置き換えます。他の人は、オーダーとエクスポートにプライベート ライブラリを含める必要があると言っていましたが、私は Maven を使用しているため、これは当てはまりませんでした。

このチュートリアルは、ABS と DrawerLayout を連携させるのに役立ちました。

于 2013-07-16T21:45:31.667 に答える
0

私も同じ問題を抱えていました。そこで、次の手順で解決しました。それは他の人に役立ちます。

問題は、コンパイラdrawer_layoutactivity_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>
于 2014-07-29T08:43:53.513 に答える
0

これを試して、問題が解決しない場合はお知らせください:

  • [ビルド パス] > [ビルド パスの構成] > [注文とエクスポート] に移動します。
  • Android および Android 依存関係ライブラリを確認する
  • プロジェクトをクリーンアップして再構築する
于 2013-06-30T11:16:46.000 に答える
0

最新のサポート ライブラリがインストールされていますか? クラス android.support.v4.widget.DrawerLayout は、約 1 か月前 (バージョン 13) の最新ライブラリにのみ含まれています。

于 2013-06-30T11:24:12.017 に答える