navigationView中view的id在Activity中是无法直接获取到的。
调用findviewbyid会报空指针异常的错误。
此时需要用下面这种写法间接获取view
NavigationView view = (NavigationView) findViewById(R.id.nav_view);
View headerLayout = view.inflateHeaderView(R.layout.nav_header);
CircleImageView imageView = headerLayout.findViewById(R.id.icon_image);
imageView.setOnClickListener(this);
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.icon_image:
Toast.makeText(MainActivity.this,"点击登录",Toast.LENGTH_SHORT).show();
break;
}
}
注意!!由于已经动态添加了,所以xml中下面这句必须删掉,不然就会出现两个头部的情况,如图所示。
app:headerLayout="@layout/nav_header_main"