android获取navigationview 上的控件id

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

    

我在这个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)