导航抽屉上的按钮单击

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

【讨论】:

在片段中你应该得到它,也把你的片段代码写成 终于可以了,但是当我单击按钮时,导航抽屉显示空白菜单?如何添加菜单列表视图项?

以上是关于导航抽屉上的按钮单击的主要内容,如果未能解决你的问题,请参考以下文章

如何使用导航抽屉打开和关闭更改按钮图像

反应本机抽屉导航在按钮单击时不起作用

如何在主片段中单击按钮时打开导航抽屉?

无法通过单击按钮(仅通过手势)打开导航抽屉

导航抽屉活动:在按钮单击时从片段移动到片段

如何使向上按钮返回而不是打开导航抽屉