FindViewById()如何工作?

时间:2014-08-13 05:24:26

标签: c# android xamarin xamarin-studio

我是移动应用开发的新手。我正在使用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()如何工作?

5 个答案:

答案 0 :(得分:0)

MyButton id不是const值,它会改变每次启动。

答案 1 :(得分:0)

Activity或ViewGroup的findViewById()方法返回已具有id的视图。 findViewById()方法应与XML布局结合使用,以提供对XML文件中定义的View的引用。

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

答案 2 :(得分:0)

您必须将id MyOwnBtn提供给您在设计师中创建的Button

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

来自official documentation

  

查找具有给定ID的子视图。如果此视图具有给定的id,请返回此视图。

答案 3 :(得分:0)

.xml 文件中声明按钮时,应为其设置ID(通常使用 string.xml 文件)。在此之后, R.java 将自动更新,并为您声明的ID设置一个数字,您可以像您所做的那样通过该ID访问您的按钮。

答案 4 :(得分:0)

它会尝试从您膨胀的XML文件中找到它。因此,请确保您提供正确的xml文件。这段代码膨胀了xml:

SetContentView (Resource.Layout.MainLayout);

即使您在xml文件中创建了正确的ID,如果您不首先对其进行充气,系统也无法找到该视图,因为它没有被充气。