java - 如何通过 Activity 的 ID 在导航 View 中找到 View ?

标签 java c# android xamarin findviewbyid

我有一个 Activity 布局,它调用另一个 xml 文件作为标题。我想通过 nav_header_main 中设置的 ImageView 的 ID 获取引用,但我无法访问它。

activity_main:

<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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

  <android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

nav_header_main:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="@dimen/nav_header_height"
    android:background="@drawable/side_nav_bar"
    android:gravity="bottom"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:theme="@style/ThemeOverlay.AppCompat.Dark">

    <ImageButton
        android:background = "@drawable/roundedbuttonwhite"
        android:id="@+id/LogoButtonView"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:scaleType="fitCenter"
        android:paddingTop="15dp"
        android:src="@drawable/logoimg" />

</LinearLayout>

请注意 nav_header_mainactivity_layout 中被调用。

我试图在该 Activity 中设置一个 OnClickListener,但我得到了一个 NullException,仅仅是因为我无法从该 Activity 访问该 ImageButton View 。

logoImageButton = FindViewById<ImageButton>(Resource.Id.LogoButtonView); //Returns null
logoImageButton.SetOnClickListener(this);

有什么方法可以绕过它并获得引用吗?似乎我错过了一件简单的事情。

最佳答案

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 查看 hView = navigationView.getHeaderView(0); TextView nav_user = (TextView)hView.findViewById(R.id.nav_name); nav_user.setText(用户);

关于java - 如何通过 Activity 的 ID 在导航 View 中找到 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55880599/

相关文章:

java - Android:通用空指针异常

java - 通用论证方法 ?极好的

c# - CQRS - 避免切换大小写来调用命令处理程序

Java RCP/SWT - Eclipse RCP 中的 "Android Toast like"对话框

c# - 将 DataSet 与 DataGrid 一起使用

c# - C++/CLI或C#用于在Windows上创建快速,现代和响应迅速的GUI

android - 盒子阴影在 Android 中不起作用

java - 无法更改 Android Activity

java - 如何在 SE 应用程序中引导 weld-osgi 版本 2

java - 引用更新线程安全吗?