1

这一定是一个非常愚蠢的问题,因为我无法在网上找到答案......我知道强制转换正在将一种数据类型更改为另一种数据类型。这个按钮如何改变它的数据类型?Button button = (Button)findViewById(R.Bla.Bla)为什么我们不能只写Button button = New Button()然后以另一种方式将xml分配给它?请解释一下,我迷路了。

4

5 回答 5

6

可以将 a 设置Button为新按钮。

findViewById返回一个视图。如果你想访问它的任何Buttonosity,你必须强制转换,否则引用不是一个按钮。当然,有时可能还可以。

于 2013-02-14T18:31:49.520 回答
4

请参阅在 Android 中您可以通过两种方式创建 UI 元素:

1. 通过 layouts (.xml) 文件创建 UI 元素。 并在 java 类中使用它们,将它们映射到相应的类。为此,我们必须调用方法 findViewById(int id); 它返回具有给定 id 的 perticuler 元素的视图。因此我们必须将其类型转换为相应的组件。因此,如果您已经在 xml 中创建了一个元素,为什么还要在 java 端再次创建一个不同的对象。所以只需映射使用 xml 文件创建的元素。

2.通过java端创建UI元素。 要使用此功能,必须使用新关键字 ex 在 java 中创建元素。按钮按钮 = 新按钮();然后设置该对象的所有属性。

But But But 但是, 根据android的哲学,你应该在xml中创建UI,并在java端编写你的核心业务逻辑。有了这个概念,您可以编写干净整洁的应用程序代码。但这只是建议,根本不是强制性的。现在由你决定……我认为一开始你会感觉到它不同,但一段时间后你会开始喜欢它……

这就是安卓的魅力。

谢谢。我希望,我彻底回答了你的问题。

于 2013-02-14T18:49:24.983 回答
2

另外,请记住这ButtonView. 该findViewById()方法返回一个泛型(您放在布局文件中的View任何View或子类)。View演员Button说“没关系 - 我知道这是一个按钮,而不仅仅是一个常规视图”,它允许您访问超类Button中不可用的属性和方法View

于 2013-02-14T18:38:05.177 回答
2

final Button callButton = (Button) findViewById(R.id.callButton);

我相信,当使用 查找 XML 视图时findViewbyId(),它会返回 UI 中的视图,但必须转换返回的视图才能Java 代码中用作按钮,并且可以访问按钮方法

有一些方法可以在 Java 代码中创建一个按钮,而无需在 XML 中指定它,但这种做法将 UI 与逻辑区分开来。

另外,在 XML 中声明 UI 元素会更好,因为它可以通过使用setContentView().

于 2013-02-14T18:38:34.553 回答
1

View您有两个选项可以在 android中创建组件,包括Button

1-在layoutXML 文件中定义它并使用(Button) findViewById(R.id.button)

2-在代码中动态创建它,例如Button button = new Button();

两者都有自己的优点和缺点,例如,UIlayoutxml 中定义使您更简洁,并通过将实际代码与实际代码Activity分开来为您提供更大的灵活性UI

动态UI创建在许多需要动态创建的应用程序中很有Views

于 2013-02-14T18:34:38.413 回答