Android 导航视图中的标题重复

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

我在我的应用程序中使用了导航视图。导航视图中的标题重复了两次,但我实际上在xml中删除了它(app:headerLayout=“@layout/Header”)。我想从导航视图的标题中实现操作(如按钮)

在代码中,我是这样写的

    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 "