FindViewById()如何工作

本文关键字:工作 FindViewById 何工作 | 更新日期: 2023-09-27 18:17:57

我是手机应用开发新手。我正在使用Xamarin开发Android应用程序。在hello world应用程序的OnCreate方法中,我看到以下代码:

Button button = FindViewById<Button>(Resource.Id.MyButton);

我想用同样的方式创建我自己的按钮。我在设计器中创建了按钮并在OnCreate方法中添加了一行:

Button myOwnBtn = FindViewById<Button>(Resource.Id.MyOwnBtn);

这给了我一个错误,没有MyOwnBtn。然后我查看Id类的代码,看到有这样一行:

public const int MyButton=2123344112;

如果我在这里写一行:

public const int MyOwnBtn=2123344113;

一切正常。但据我所知,它应该自动生成,否则为每个控件设置一个唯一的数字会有点困难。

谁能告诉我我做错了什么?FindViewById()如何工作?

FindViewById()如何工作

您必须将id MyOwnBtn赋予您在设计器中创建的Button

findViewByIdView类的方法,它查找具有您在参数中提供的id的子视图。

来自官方文档:

查找具有给定id的子视图。如果该视图具有给定的id,则返回该视图。

MyButton id不是const值,它将在每次启动时更改。

Activity或ViewGroup的findViewById()方法返回一个已经有id的视图。findViewById()方法应该与XML布局一起使用,以提供对XML文件中定义的视图的引用。

编辑:不完全确定我的答案是否与Xamarin有关。如果我误导了大家,我很抱歉,我指的是Java Android应用程序开发。

当您在.xml文件中声明按钮时,您应该为它设置一个id(通常使用string.xml文件完成)。之后, r.j java将自动更新,并设置一个数字到你声明的id,你可以访问你的按钮的id,就像你所做的。

它将尝试从您填充的XML文件中找到它。因此,请确保填充正确的xml文件。这段代码扩展了xml:

SetContentView (Resource.Layout.MainLayout);

即使您在xml文件中创建了正确的id,如果您不首先膨胀它,系统将无法找到该视图,因为它没有膨胀