【问题标题】:Navigation Drawer Android layout created. How to create onClick actions?导航抽屉 Android 布局已创建。如何创建 onClick 动作?
【发布时间】:2017-02-23 18:32:43
【问题描述】:

我完全是编程菜鸟,所以感谢您的耐心等待。

在我的主要活动中,出现了一个随机引用,然后我创建了一个导航抽屉(当然是在 youtube 教程的帮助下)。当我点击它们时,如何让这些“项目”做出反应?例如,其中一个是词汇表,所以我需要写很多。我应该创建一个活动还是一个片段(有什么区别)?以及如何单击“词汇表”顶部打开该视图? 再次感谢您:)

编辑:(这是我的相关代码和布局)

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_quote_of_the_dat"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.hp.myapp.QuoteOfTheDat"
    android:background="@color/colorAccent">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/randomQuote" android:layout_marginTop="147dp"
            android:textSize="24sp"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:textAlignment="center"
            android:textColor="@android:color/background_light" />

    </LinearLayout>

    <android.support.design.widget.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        app:menu="@menu/navigation_menu"
        android:layout_gravity="start"
        android:id="@+id/drawerLayout"
        app:headerLayout="@layout/navigation_header">

    </android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>

还有我的菜单 xml

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/home"
        android:icon="@mipmap/ic_home_black_24dp"
        android:title="Home"/>

    <item android:id="@+id/glossary"
        android:icon="@mipmap/ic_book_black_24dp"
        android:title="Glossary"/>

    <item android:id="@+id/anxiety"
        android:icon="@mipmap/ic_lock_outline_black_24dp"
        android:title="Anxiety"/>

    <item android:id="@+id/physicality"
        android:icon="@mipmap/ic_pan_tool_black_24dp"
        android:title="Physicality"/>

    <item android:id="@+id/date"
        android:icon="@mipmap/ic_favorite_black_24dp"
        android:title="ToBeDefined"/>

</menu>

还有我的 java 文件

package com.example.hp.myapp;

import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.TextView;
import java.util.Random;
import android.content.res.Configuration;
import android.support.v7.widget.Toolbar;
import android.widget.Toast;

public class QuoteOfTheDat extends AppCompatActivity {

        private DrawerLayout mDrawerLayout;
        private ActionBarDrawerToggle mToggle;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quote_of_the_dat);



        mDrawerLayout = (DrawerLayout) findViewById(R.id.activity_quote_of_the_dat);
        mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);

        mDrawerLayout.addDrawerListener(mToggle);
        mToggle.syncState();

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);


    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item){

        if (mToggle.onOptionsItemSelected(item)){
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

【问题讨论】:

  • 使用 Android Studio 的模板

标签: android android-layout android-activity onclick navigation-drawer


【解决方案1】:

首先,您需要在导航视图上设置 onClickListener,如下所示:-

yourNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

 @Override
 public boolean onNavigationItemSelected(MenuItem menuItem) {
       switch(menuItem.getItemId()) {
           // Here in each case statement you need to pass the id of the menu items and then call startActivity(new Intent()) in each case statement.
          case R.id.your_item:
          startActivity(new Intent(currentClass.this, nextActivity.class));
          break;
       }

【讨论】:

  • 我的导航视图是什么?
  • 您的导航视图在您的第一个 xml 文件中,ID 为“drawerLayout”。所以,你需要先在java文件中声明这个id为 NavigationView navigationView = (NavigationView) findViewById(R.id.drawerLayout);谢谢!!
  • 我仍然遇到错误:(它说它无法解析“setNavigationItemSelectedListener”、“onNavigationItemSelectedListener”和“menuItem”上的符号。再次感谢您
  • 好的,听听这4个连续详细的视频,让你的所有答案都清楚。 youtube.com/watch?v=AS92bq3XxkA
  • 我使用那个教程来制作我的抽屉,但它没有解释如何创建活动/片段并让它们通过抽屉工作:/
猜你喜欢
  • 2017-01-01
  • 2014-12-14
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
相关资源
最近更新 更多