Java 关于Android中findViewById(intID)方法的澄清

Java 关于Android中findViewById(intID)方法的澄清,java,android,android-activity,Java,Android,Android Activity,我正在进行头先安卓系统开发,我对它有点困惑 此方法-->findViewById(int id) 我在文件“activity\u find\u beer.xml”中有下面的按钮: 我的问题是onClickFindBeer(视图视图)的视图类型为 对象作为参数,但在我刚才提到的xml中 android:onClick=“onClickFindBeer”当用户单击 按钮,调用onClickFindBeer方法…谁在传递 在onClickFindBeer(视图视图)中键入View…。这是什么 含蓄的

我正在进行头先安卓系统开发,我对它有点困惑 此方法-->findViewById(int id)

我在文件“activity\u find\u beer.xml”中有下面的按钮:

  • 我的问题是onClickFindBeer(视图视图)的视图类型为 对象作为参数,但在我刚才提到的xml中
    android:onClick=“onClickFindBeer”
    当用户单击 按钮,调用onClickFindBeer方法…谁在传递 在onClickFindBeer(视图视图)中键入View…。这是什么 含蓄的

  • 第二,关于我所看到的方法 findViewById(int-id)都在活动类中( )也在查看类中 ... 我不清楚哪个类(活动或视图) 当我调用findviewbyd()时调用findviewbyd(int-id)方法 从onClickFindBeer(视图){}

  • 如果有人能说明这一点,我将不胜感激

    问候

  • 该方法采用
    视图
    参数,因为它是如何在
    按钮
    类的超类中实现的(它是
    公共类按钮扩展了TextView
    )。添加到XML中的视图实际上是java类。当您为这样的XML项设置属性时,它会相应地从特定java类构造对象。
    View
    类的
    onClick
    方法是
    onClick(View v)
    。通过设置XML,您只要求Button类查找输入的方法,但其签名始终带有一个视图作为参数,它引用了单击的视图
  • 必须对视图组调用
    findViewById
    。但是ActyCity类实现它来搜索视图中由
    setContentView()
    方法分配给它的项
  • 该方法采用
    视图
    参数,因为它是如何在
    按钮
    类的超类中实现的(它是
    公共类按钮扩展了TextView
    )。添加到XML中的视图实际上是java类。当您为这样的XML项设置属性时,它会相应地从特定java类构造对象。
    View
    类的
    onClick
    方法是
    onClick(View v)
    。通过设置XML,您只要求Button类查找输入的方法,但其签名始终带有一个视图作为参数,它引用了单击的视图
  • 必须对视图组调用
    findViewById
    。但是ActyCity类实现它来搜索视图中由
    setContentView()
    方法分配给它的项
  • 这有点含蓄。在构建应用程序时,XML文件实际上会转换为Java文件。单击视图时,视图将传递到onClickFindBeer(视图)函数中
  • 活动正在此处调用findViewById()。您可以通过在按住Ctrl键的同时单击findViewByID来查看方法声明。对于视图,必须使用视图调用它。比如说,

    view.findViewById()

  • 这有点含蓄。在构建应用程序时,XML文件实际上会转换为Java文件。单击视图时,视图将传递到onClickFindBeer(视图)函数中
  • 活动正在此处调用findViewById()。您可以通过在按住Ctrl键的同时单击findViewByID来查看方法声明。对于视图,必须使用视图调用它。比如说,

    view.findViewById()

  • 它被称为android
  • 二,

    据我所知,主要区别在于,当您使用activity中的
    OnClickListener
    时,它与partivular对象(如Textview、Button)连接

    find_beer.setOnClickListener
    当按下某个按钮时,执行下面的代码

    当使用android:onClick=“onClickFindBeer”时,直接在视图的活动中处理单击,而无需实现任何界面

  • 它被称为android
  • 二,

    据我所知,主要区别在于,当您使用activity中的
    OnClickListener
    时,它与partivular对象(如Textview、Button)连接

    find_beer.setOnClickListener
    当按下某个按钮时,执行下面的代码


    当使用
    android:onClick=“onClickFindBeer”
    时,直接在视图的活动中处理单击操作,而无需实现任何接口基于上面的示例,
    android:onClick
    方法是被调用的方法,因为在java类中调用
    onClick
    方法时,它需要调用一个
    onClickListener


    原因是另一个问题。据我所知,它属于视图类,因为它总是引用设计中的对象

    根据上面的示例,
    android:onClick
    方法是被调用的方法,因为在java类中调用
    onClick
    方法时,它需要调用
    onClickListener

    原因是另一个问题。据我所知,它属于视图类,因为它总是引用设计中的对象

  • 您已将方法指定给按钮。单击按钮时,对象(在本例中为按钮)将传递给指定给它的方法。按钮是视图对象的一种类型,因此您有一个更通用的视图对象作为参数,但您完全可以将其强制转换为按钮对象

  • findViewById是通过“上下文”调用的,这是获取系统资源的一种方式。您要求系统向您返回一个特定对象,然后您可以使用该对象。它值得在上下文中详细阅读

  • 希望这能回答你的一些疑问

  • 您已将方法指定给按钮。当按钮被点击时,
    <Button
    android:id="@+id/find_beer"
    android:text="@string/find_beer"
    android:onClick="onClickFindBeer" />
    
    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);
        }
        }