美文网首页我爱编程
android获取navigationview 上的控件id

android获取navigationview 上的控件id

作者: 雇个城管打天下 | 来源:发表于2018-04-16 22:10 被阅读25次

这两天在重构之前一个项目的时候发现了一个小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 上的控件id

    本文链接:https://www.haomeiwen.com/subject/dcdykftx.html