gpt4 book ai didi

java - 关于 Android 中的 findViewById(int id) 方法的说明

转载 作者:行者123 更新时间:2023-11-29 10:10:36 26 4
gpt4 key购买 nike

我正在经历 Head First Android Development,我有点困惑这个方法 --> findViewById(int id)

我在文件“activity_find_beer.xml”中有以下按钮:

<Button
android:id="@+id/find_beer"
android:text="@string/find_beer"
android:onClick="onClickFindBeer" />

以及 FindBeerActivity.java 类中的以下代码,它获取用户选择的啤酒并将其显示在 TextView 中。

public class FindBeerActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_beer);
}
//Call when the button gets clicked
public void onClickFindBeer(View view) {
//Get a reference to the TextView
TextView brands = (TextView) findViewById(R.id.brands);
//Get a reference to the Spinner
Spinner color = (Spinner) findViewById(R.id.color);
//Get the selected item in the Spinner
String beerType = String.valueOf(color.getSelectedItem());
//Display the selected item
brands.setText(beerType);
}
}
  1. 我的问题是 onClickFindBeer(View view) 方法接受一个 View 类型对象作为参数,但在我刚才提到的xml中android:onClick="onClickFindBeer" 当用户点击button ,方法 onClickFindBeer 被调用...谁正在传递对象在 onClickFindBeer(View view) 中输入 View ...是什么东西隐含的?

  2. 其次,关于 developer.android.com我看到这个方法findViewById(int id) 都在Activity 类 ( https://developer.android.com/reference/android/app/Activity.html) 以及 View 类 https://developer.android.com/reference/android/view/View.html...我不清楚哪个类(class)( Activity 或 View )当我调用 findViewById() 时调用 findViewById(int id) 方法来自 onClickFindBeer(查看 View ){}。

如果有人能阐明这一点,我们将不胜感激。

问候。

最佳答案

  1. 该方法采用 View 参数,因为它是在 Button 类的父类(super class)中实现的(它是 public class Button extends TextView.)。您添加到 XML 的 View 实际上是 java 类。当您为这样的 XML 项设置属性时,它会相应地从特定的 Java 类构造对象。 View 类的 onClick 方法为 onClick(View v)。通过设置 XML,您只是要求 Button 类查找输入的方法,但其签名始终带有一个 View 作为参数,它指的是单击的 View 。
  2. findViewById 必须在 View 组上调用。但是 Actyvity 类实现它以在 setContentView() 方法分配给它的 View 中搜索项目。

关于java - 关于 Android 中的 findViewById(int id) 方法的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37457926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com