【问题标题】:NullPointerException when trying to add a Navigation Drawer (Android)尝试添加导航抽屉时出现 NullPointerException (Android)
【发布时间】:2015-07-28 10:58:39
【问题描述】:

我有点卡住了。我一直在关注一些教程,最终制作了一个DrawerLayout,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/nav_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent">

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

</FrameLayout>

<ListView
    android:id="@+id/list"
    android:entries="@array/menuitems"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="left">
</ListView>
</android.support.v4.DrawerLayout>

我希望每当我的工具栏中的汉堡图标被按下时,这个菜单就会滑入,所以我在我的 Activity 中设置了一个 onClickListener:

    hamburgerIcon = (ImageView) findViewById(R.id.hamburger);
    hamburgerIcon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                 String[] osArray = { "Bla", "Bla", "alB", "alB", "BLA" };
                 mAdapter = new ArrayAdapter<>(this,  android.R.layout.simple_list_item_1, osArray);
                 mDrawerList = (ListView) findViewById(R.id.list);
                 mDrawerList.setAdapter(mAdapter);
        }
    };

当我尝试初始化 ListView (mDrawerList) 时,我得到一个 NullPointer - 我确定这是因为我使用的 Activity 使用与 navigation_drawer.xml 不同的布局,所以它无法找到xml 中的 ListView。我的问题是,如何使用我的主(不同)布局来使用导航抽屉布局?

欢迎任何提示,谢谢。

编辑: 我使用这个标签在主布局中包含DrawerLayout

    <include layout="@layout/navigation_drawer"
        android:id="@+id/navdraw"/>

但是,现在我在打开主布局时遇到 RuntimeException “原因:android.view.InflateException:二进制 XML 文件第 2 行:错误膨胀类 android.support.v4.DrawerLayout” - 然后它抱怨主要活动中的 setContentView(..) 行。

我已尝试在 gradle 脚本中添加依赖项

compile 'com.android.support:support-v4:20.0.0'

但它用红色下划线表示“支持库不应使用低于 targetSdkVersion (22) 的版本 (20)”。

有什么想法吗?

【问题讨论】:

    标签: java android android-layout android-menu android-toolbar


    【解决方案1】:
     hamburgerIcon = (ImageView) findViewById(R.id.hamburger);
      mDrawerList = (ListView) findViewById(R.id.list);
        hamburgerIcon.setOnClickListener(new View.OnClickListener() {
    
        @Override
        public void onClick(View v) {
                 String[] osArray = { "Bla", "Bla", "alB", "alB", "BLA" };
                     mAdapter = new ArrayAdapter<>(this,  android.R.layout.simple_list_item_1, osArray);
                               mDrawerList.setAdapter(mAdapter);
            }
        };
    

    再试一次

    【讨论】:

      【解决方案2】:

      看起来navigation_drawer.xml 不是主要布局? 您可以使用include 标签并设置id。那就试试findViewById(include_id).findViewById(R.id.list)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多