我有点卡住了。我一直在跟进一些教程并最终制作如下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>
每当我的工具栏中的汉堡包图标被按下时,我希望此菜单滑入,所以我在我的活动中设置了一个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)”。
有什么想法吗?
答案 0 :(得分:0)
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);
}
};
再试一次
答案 1 :(得分:-1)
看起来navigation_drawer.xml
不是主要布局?
您可以使用include
代码并设置id
。然后尝试findViewById(include_id).findViewById(R.id.list)
。