Header 在导航视图中重复 android
Header Repetition in navigation view android
我在我的应用程序中使用了导航视图。 Header 在导航视图中重复了两次但我实际上在 [=30= 中删除了它 (app:headerLayout="@layout/header") ].我想从 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);
Header 赞以下
如果 headerView 从图像按钮中删除,我会收到 NullPointerException 错误
任何建议或解决方案将不胜感激
将您的支持库更新到 23.1.1 或更高版本。
之后你可以这样做 -
在 NavigationView 中的 app:headerLayout="@layout/header" 添加标题视图。
然后,您可以通过
访问它
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);
参考:https://code.google.com/p/android/issues/detail?id=190226#c31
好吧,我在使用 NavigationView
header 时也遇到了 NPE,我在布局中添加了 headers app:headerLayout="@layout/header"
为了摆脱这个 NPE,我开始以编程方式添加 header,如下所示
View header = LayoutInflater.from(this).inflate(R.layout.bp_header, null);
mNavigationView.addHeaderView(header);
googele_plus = (ImageButton) header.findViewById(R.id.google_p);
You may have header layout in xml and also you are adding header from java like
headerView = mNavigationView.inflateHeaderView(R.layout.bp_header);
So just remove above line from java and add it through the xml
You can add following in your xml
<include
android:id="@+id/header"
layout="@layout/navigation_header" />
and then in java create ref like below
googele_plus = (ImageButton) findViewById(R.id.google_p);
facebook = (ImageButton) findViewById(R.id.fb);
Clean and Build the project and then run
您似乎创建了 header 2 次。我有同样的问题。
headerView = mNavigationView.inflateHeaderView(R.layout.bp_header);
这一行 ^ 实际上在运行时创建了新视图。我相信您在 XML 中创建了相同的 header。尝试从 XML 中删除 headerView
。那会解决你的问题。
您可能会调用该导航视图header 设置函数两次。所以它创建了两次。
如果您在 onStart() 方法中编写了该设置导航 header 视图,请删除并在 onCreate() 方法中写入。
如果您转到其他 activity 并返回,onStart 将调用多次。
所以它会创建 header 次。
或者检查您多次调用该代码的代码。
在 KOTLIN 中,我使用以下代码实现了。
第 1 步。从 NavigationView 中删除 app:headerLayout="@layout/your_header_layout"。
第 2 步。在您的 activity
中添加以下代码
var nav = nav_view.inflateHeaderView(R.layout.nav_header_home)
nav?.nav_header_title?.text = "Your text "
注意:如果您不从 NavigationView 中删除 app:headerLayout,那么 header 将重复两次。
我在我的应用程序中使用了导航视图。 Header 在导航视图中重复了两次但我实际上在 [=30= 中删除了它 (app:headerLayout="@layout/header") ].我想从 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);
Header 赞以下
如果 headerView 从图像按钮中删除,我会收到 NullPointerException 错误 任何建议或解决方案将不胜感激
将您的支持库更新到 23.1.1 或更高版本。
之后你可以这样做 -
在 NavigationView 中的 app:headerLayout="@layout/header" 添加标题视图。
然后,您可以通过
访问它 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);
参考:https://code.google.com/p/android/issues/detail?id=190226#c31
好吧,我在使用 NavigationView
header 时也遇到了 NPE,我在布局中添加了 headers app:headerLayout="@layout/header"
为了摆脱这个 NPE,我开始以编程方式添加 header,如下所示
View header = LayoutInflater.from(this).inflate(R.layout.bp_header, null);
mNavigationView.addHeaderView(header);
googele_plus = (ImageButton) header.findViewById(R.id.google_p);
You may have header layout in xml and also you are adding header from java like
headerView = mNavigationView.inflateHeaderView(R.layout.bp_header);
So just remove above line from java and add it through the xml
You can add following in your xml
<include
android:id="@+id/header"
layout="@layout/navigation_header" />
and then in java create ref like below
googele_plus = (ImageButton) findViewById(R.id.google_p);
facebook = (ImageButton) findViewById(R.id.fb);
Clean and Build the project and then run
您似乎创建了 header 2 次。我有同样的问题。
headerView = mNavigationView.inflateHeaderView(R.layout.bp_header);
这一行 ^ 实际上在运行时创建了新视图。我相信您在 XML 中创建了相同的 header。尝试从 XML 中删除 headerView
。那会解决你的问题。
您可能会调用该导航视图header 设置函数两次。所以它创建了两次。
如果您在 onStart() 方法中编写了该设置导航 header 视图,请删除并在 onCreate() 方法中写入。
如果您转到其他 activity 并返回,onStart 将调用多次。 所以它会创建 header 次。 或者检查您多次调用该代码的代码。
在 KOTLIN 中,我使用以下代码实现了。
第 1 步。从 NavigationView 中删除 app:headerLayout="@layout/your_header_layout"。
第 2 步。在您的 activity
中添加以下代码var nav = nav_view.inflateHeaderView(R.layout.nav_header_home)
nav?.nav_header_title?.text = "Your text "
注意:如果您不从 NavigationView 中删除 app:headerLayout,那么 header 将重复两次。