Android 导航视图中的标题重复
我在我的应用程序中使用了导航视图。导航视图中的标题重复了两次,但我实际上在xml中删除了它(app:headerLayout=“@layout/Header”)。我想从导航视图的标题中实现操作(如按钮) 在代码中,我是这样写的Android 导航视图中的标题重复,android,navigationview,android-navigationview,Android,Navigationview,Android Navigationview,我在我的应用程序中使用了导航视图。导航视图中的标题重复了两次,但我实际上在xml中删除了它(app:headerLayout=“@layout/Header”)。我想从导航视图的标题中实现操作(如按钮) 在代码中,我是这样写的 mNavigationView = (NavigationView) findViewById(R.id.navigation_view); headerView = mNavigationView.inflateHeaderView(R.layout.b
mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
headerView = mNavigationView.inflateHeaderView(R.layout.bp_header);
googele_plus = (ImageButton) headerView.findViewById(R.id.google_p);
facebook = (ImageButton) headerViewfindViewById(R.id.fb);
标题如下所示
如果从图像按钮中删除headerView,则出现NullPointerException错误
如有任何建议或解决方案,请将您的支持库更新至23.1.1或更高版本 之后你可以做这个- 在app:headerLayout=“@layout/header”的NavigationView中添加headerview 然后,你可以通过
mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
View headerView = mNavigationView.getHeaderView(0)
googele_plus = (ImageButton) headerView.findViewById(R.id.google_p);
facebook = (ImageButton) headerView.findViewById(R.id.fb);
Ref:我在使用
导航视图
标题时也得到了NPE,我在布局应用程序中添加标题:headerLayout=“@layout/header”
为了摆脱这个NPE,我开始以编程方式添加标题,如下所示
View header = LayoutInflater.from(this).inflate(R.layout.bp_header, null);
mNavigationView.addHeaderView(header);
googele_plus = (ImageButton) header.findViewById(R.id.google_p);
您可能有xml格式的标题布局,并且您正在添加来自类似java的标题
headerView=mNavigationView。充气headerView(右布局。bp_标题);
所以只需从java中删除上面的行,并通过xml添加它
您可以在xml中添加以下内容
然后在java中创建如下所示的ref
googele_plus=(ImageButton)findViewById(R.id.google_p);
facebook=(ImageButton)findViewById(R.id.fb);
清理并构建项目,然后运行
您似乎创建了两次标题。我也有同样的问题
headerView = mNavigationView.inflateHeaderView(R.layout.bp_header);
这一行^实际上在运行时创建了新视图。我相信您可以用XML创建相同的头。尝试从XML中删除该
headerView
。那会解决你的问题 您可以两次调用导航视图标题设置功能。所以它创造了两次
如果您在onStart()方法中编写了设置导航头视图,请删除并在onCreate()方法中编写
如果您转到其他活动并返回,onStart将多次调用。
因此,它将创建尽可能多的页眉。
或者检查您多次调用该代码的代码。在KOTLIN中,我使用以下代码实现了这一点 第一步。从NavigationView中删除app:headerLayout=“@layout/your\u header\u layout” 第二步。在活动中添加以下代码
var nav = nav_view.inflateHeaderView(R.layout.nav_header_home)
nav?.nav_header_title?.text = "Your text "
注意:如果您不从NavigationView中删除app:headerLayout,则标题将重复两次
var nav = nav_view.inflateHeaderView(R.layout.nav_header_home)
nav?.nav_header_title?.text = "Your text "