我是移动应用开发的新手。我正在使用Xamarin开发Android应用程序。在OnCreate方法的hello world应用程序中,我看到以下代码:
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()如何工作?
答案 0 :(得分:0)
MyButton id不是const值,它会改变每次启动。
答案 1 :(得分:0)
Activity或ViewGroup的findViewById()方法返回已具有id的视图。 findViewById()方法应与XML布局结合使用,以提供对XML文件中定义的View的引用。
编辑:不完全确定我的答案是否与Xamarin相关。如果我误导了人们,我很抱歉,我指的是Java Android应用程序开发。
答案 2 :(得分:0)
您必须将id
MyOwnBtn
提供给您在设计师中创建的Button
。
findViewById
是View
类的一种方法,它会查找您在参数中提供id
的子视图。
查找具有给定ID的子视图。如果此视图具有给定的id,请返回此视图。
答案 3 :(得分:0)
在 .xml 文件中声明按钮时,应为其设置ID(通常使用 string.xml 文件)。在此之后, R.java 将自动更新,并为您声明的ID设置一个数字,您可以像您所做的那样通过该ID访问您的按钮。
答案 4 :(得分:0)
它会尝试从您膨胀的XML文件中找到它。因此,请确保您提供正确的xml文件。这段代码膨胀了xml:
SetContentView (Resource.Layout.MainLayout);
即使您在xml文件中创建了正确的ID,如果您不首先对其进行充气,系统也无法找到该视图,因为它没有被充气。