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()如何工作?您必须将id
MyOwnBtn
赋予您在设计器中创建的Button
。
findViewById
是View
类的方法,它查找具有您在参数中提供的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,如果您不首先膨胀它,系统将无法找到该视图,因为它没有膨胀