导航抽屉上的按钮单击
Posted
技术标签:
【中文标题】导航抽屉上的按钮单击【英文标题】:Navigation Drawer On Button Click 【发布时间】:2018-03-02 07:44:52 【问题描述】:我想在我的应用中有一个抽屉式导航
我已经做了这个
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical"
android:weightSum="1">
<View
android:id="@+id/view"
android:layout_
android:layout_
android:background="#7e7e7e" />
<WebView
android:id="@+id/sitesWebView"
android:layout_
android:layout_
android:layout_weight="1.07" />
<RelativeLayout
android:layout_
android:layout_
android:background="#FFFDFE"
android:minHeight="?attr/actionBarSize">
<ImageView
android:id="@+id/webviewBack"
android:layout_
android:layout_
android:layout_centerVertical="true"
android:layout_margin="5dp"
android:background="@drawable/imageview_selector"
android:padding="5dp"
android:src="@drawable/ic_back" />
<ImageView
android:id="@+id/webviewForward"
android:layout_
android:layout_
android:layout_centerVertical="true"
android:layout_margin="5dp"
android:layout_toRightOf="@+id/webviewBack"
android:background="@drawable/imageview_selector"
android:padding="5dp"
android:src="@drawable/ic_forward" />
<ImageView
android:id="@+id/mDrawerToggle"
android:layout_
android:layout_
android:layout_centerInParent="true"
android:background="@drawable/imageview_selector"
android:padding="5dp"
android:src="@drawable/ic_drawer" />
</RelativeLayout>
</LinearLayout>
我想使用这个图片按钮
<ImageView
android:id="@+id/mDrawerToggle"
android:layout_
android:layout_
android:layout_centerInParent="true"
android:background="@drawable/imageview_selector"
android:padding="5dp"
android:src="@drawable/ic_drawer" />
能够在点击时打开导航抽屉
我制作片段
@Override
public void onClick(View view)
switch (view.getId())
case R.id.webviewBack:
isWebViewCanGoBack();
break;
case R.id.webviewForward:
if (webView.canGoForward())
webView.goForward();
break;
case R.id.webviewReload:
String url = webView.getUrl();
LoadWebViewUrl(url);
break;
case R.id.webviewClose:
finish();
break;
case R.id.mDrawerToggle:
DrawerLayout mDrawerLayout = (DrawerLayout)getActivity().findViewById(R.id.mDrawerToggle);
final DrawerLayout drawer = (DrawerLayout)getActivity().findViewById(R.id.mDrawerToggle);
drawer.openDrawer(Gravity.LEFT);
return false;
但我会得到错误
error: cannot find symbol method getActivity()
error: incompatible types: unexpected return value
有人知道怎么解决吗?
我想要的是当 imagebutton(mDrawerToggle)
被点击它会打开导航抽屉
谢谢
【问题讨论】:
你可以写 getApplicationContext() 或 getParentActivity() 代替 getActivity()。 【参考方案1】:您不能在片段中编写 findViewById 来查找活动 xml 视图。而是尝试这个
在你的活动中让这个私人会员 virailbe
DrawerLayout mDrawerLayout,drawer;
然后在onCreate
中使用findViewById
找到您的抽屉。
mDrawerLayout = (DrawerLayout)findViewById(R.id.mDrawerToggle);
drawer = (DrawerLayout)findViewById(R.id.mDrawerToggle);
创建一个方法来在你的活动中获取 DrawerLayout 的引用
public DrawerLayout getDrawerLayout()
return mDrawerLayout;
public DrawerLayout getDrawerLayout()
return drawer;
然后在你的片段中像这样调用你的活动方法
DrawerLayout drawer=((YOURACTIVITY)getActivity()).getDrawerLayout();
【讨论】:
在片段中你应该得到它,也把你的片段代码写成 终于可以了,但是当我单击按钮时,导航抽屉显示空白菜单?如何添加菜单列表视图项?以上是关于导航抽屉上的按钮单击的主要内容,如果未能解决你的问题,请参考以下文章