android获取navigationview 上的控件id

原创 2018年04月16日 22:10:10

这两天在重构之前一个项目的时候发现了一个小bug,大致描述一下:

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

我在这个Navigation中指明了头部布局是nav_header_main,在这个头部布局中有两个TextView,转到MainActivity中初始化用的是这段代码:

TextView tvName = (TextView) findViewById(R.id.tvName);
TextView tvStuId = (TextView) findViewById(R.id.tvStuId);
tvName.setText("姓名:" + "12");
tvStuId.setText("学号:" + "123");

运行的时候却发现出现了一个非常奇葩的异常,tvName这个对象是一个空对象,查找了相关资料后才找到解决方案,应该获取相应控件的上层父控件,从上到下逐级获取,若不按照这种方法,直接findViewById的话,是获取不到对应控件id的,所以解决方案如下:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
TextView tvName = navigationView.getHeaderView(0).findViewById(R.id.tvName);
TextView tvStuId = navigationView.getHeaderView(0).findViewById(R.id.tvStuId);
tvName.setText("姓名:" + "12");
tvStuId.setText("学号:" + "123");

Android获取NavigationView header中的控件

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); View headerView = navi...
  • wjk7186912
  • wjk7186912
  • 2016-04-11 05:36:18
  • 2447

安卓开发——如何获取NavigationView上的控件id

如下: NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); View headerView =...
  • qq_28484355
  • qq_28484355
  • 2017-03-23 00:09:00
  • 581

NavigationView获取Header View的问题

NavigationView是Google推出的MD风格支持库里的主要控件之一,一般与DrawerLayout结合使用提供侧滑菜单。 NavigationView的header布局中常用来放置用户头像...
  • zjhhiu5a
  • zjhhiu5a
  • 2015-12-14 17:39:19
  • 4857

NavigationView中获取headerLayout实现点击事件的方法

特别简单,总共分三步: 第一步: 获取NavigationView [java] view plain copy  print? private  NavigationVie...
  • sinat_32829963
  • sinat_32829963
  • 2017-04-06 16:20:02
  • 1502

NavigationView中获取headerLayout的方法

特别简单,总共分三步: 第一步: 获取NavigationView private NavigationView navigationView = (NavigationView) findView...
  • qq_15907463
  • qq_15907463
  • 2016-08-29 14:01:17
  • 5624

NavigationDrawer和NavigationView-Android M新控件

Translucent System Bars-4.4新特性Toolbar-5.0新特性NavigationDrawer 简介NavigationDrawer 是 Google 在 Material ...
  • yangshangwei
  • yangshangwei
  • 2016-03-03 16:09:44
  • 7120

直接通过findViewById获取NavigationView中控件引用为null的问题

直接通过findViewById获取NavigationView中控件引用为null的问题
  • qq_19560943
  • qq_19560943
  • 2017-07-22 11:36:52
  • 195

初始化NavigationView HeaderView中控件

问题在对NavigationView headerview中的控件进行设置时,直接在Activity中通过findViewById方式进行获取,出现空指针。 解决办法1. 首先获取到Navig...
  • Hana_one
  • Hana_one
  • 2017-04-12 00:34:50
  • 188

Android开发NavigationView遇到的问题

之前使用NavigationView开发的时候,无意之间将NavigationView的布局放到了主布局的上方,结果造成了,NavigationView中的headerview和menuitem的点击...
  • u013087553
  • u013087553
  • 2017-04-06 09:41:25
  • 538

NavigationView和FloatingActionButton的使用

转载自http://www.cnblogs.com/JohnTsai/p/5172056.html正如其名,NavigationView,导航View。一般我们用它和DrawerLayout实现抽屉式...
  • hnkwei1213
  • hnkwei1213
  • 2017-03-01 17:29:58
  • 256
收藏助手
不良信息举报
您举报文章:android获取navigationview 上的控件id
举报原因:
原因补充:

(最多只允许输入30个字)