所有视图(图像、文本等)从 mainActivity 的 findViewById() 返回 null
Posted
技术标签:
【中文标题】所有视图(图像、文本等)从 mainActivity 的 findViewById() 返回 null【英文标题】:All Views (Image, Text, etc.) return null from findViewById() from mainActivity 【发布时间】:2017-08-05 20:13:02 【问题描述】:我正在尝试从MainActivity
类中分配nav_header.xml
中的dailyImage。
MainActivity 类有setContentView(R.layout.activity_main);
我可以在 nav_action.xml 中分配视图,但不能在 nav_header.xml 中。 我似乎无法理解为什么 findViewById() 在尝试从 MainActivity 类访问 nav_header.xml 中的 DailyImage 时返回 null。
保持这样,有什么办法可以分配
nav_header.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:background="@android:color/holo_blue_dark"
android:padding="10dp"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
tools:context="com.example.hello.world.MainActivity">
<ImageView
android:id="@+id/DailyImage"
android:layout_
android:layout_
android:layout_below="@+id/menu_text"
android:layout_alignParentStart="true" />
</RelativeLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:id="@+id/nav_drawer_main"
android:background="@color/gray"
android:orientation="vertical"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/nav_action"
android:layout_
android:layout_ />
<android.support.design.widget.NavigationView
android:layout_
android:layout_
android:id="@+id/nav_men"
android:background="@color/black"
app:menu="@menu/nav_menu"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header"
app:itemIconTint="@drawable/drawer_item"
app:itemTextColor="@drawable/drawer_item">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
【问题讨论】:
你能发布你的 mainactivity 代码吗? 查看***.com/questions/32246360/… 【参考方案1】:header 不是 Activity 根布局的一部分,所以无法遍历所有嵌套视图来找到它,所以它为 null。
您必须通过 NavigationView。
NavigationView get/find header layout
Is there any way to control views inside NavigationView header?
// Shouldn't be null
NavigationView navView = (NavigationView) findViewById(R.id.nav_men);
View headerView = navView.getHeaderView(0);
// This is the ImageView
ImageView iv = (ImageView) headerView.findViewById(R.id.DailyImage);
【讨论】:
以上是关于所有视图(图像、文本等)从 mainActivity 的 findViewById() 返回 null的主要内容,如果未能解决你的问题,请参考以下文章