android:onClick和View.OnClickListener之间的关系

时间:2015-10-09 10:10:53

标签: java android xml android-intent

涉足Android Studio,并通过一些教程,但我不理解一个概念。哦,也是java的新手......哈哈。

  1. 假设我有一个屏幕,一个活动,MainActivity.xml带有一个按钮。 MainActivity.xml为该按钮定义了onClick属性goForIt

  2. MainActivity课程中,我有一个方法goForIt。 这是响应被点击的按钮的位置。

  3. goForIt方法中, 我构建一个Intent来开始另一个活动, 并通过声明startActivity(intent)

  4. 将其解雇

    问题:

    1. 为什么我需要一个听众? (如果我做)? MainActivity.xml是特定方法的明确指令。或者是一个"听众"?

    2. 清单在这方面的作用是什么?活动在那里......但出于什么目的?再一次,能够找到类和方法是非常明确的,而不需要像清单那样查询查找....?

    3. 我对具有类的特定方法的显式属性的Activity XML感到困惑,然后同时,Listener说如果onClick发生了,那么做点什么......他们都试图做同样的事情,不是吗?

4 个答案:

答案 0 :(得分:3)

  1. 您可以使用侦听器,也可以在xml中指定方法以侦听视图上的单击。在两者中,您都可以将视图作为参数。
  2. 2.Manifest文件可以帮助您实现多种目的: 指定首先启动哪个活动 获得访问互联网,获取校准日志,使用地图等的权限, 为每个活动指定主题或标签等等......

    3.Both做同样的事情。一个是另一个的替代品。

答案 1 :(得分:2)

这个问题是广泛的,应该(可能会)关闭。

但是,这里是:

  1. xml文件中的onClick属性是创建侦听器的快捷方式(在这种情况下,侦听器会在您的背后创建)。你可以使用它,也可以手工完成听众。

  2. 清单在此处没有任何作用(按下按钮)。但是有必要配置活动,以便在按下启动器图标时启动它(在许多其他事情中)。

  3. Android API看起来好像从来没有正确设计......它只是成长和发展。所以是的,有多种令人困惑的方法可以做一件事。

答案 2 :(得分:1)

使用

<Button
    android:id="@+id/button"
    android:onClick="goForIt"/>

然后

public void goForIt(View v) {
    startActivity(...)
}

与使用:

完全相同
Button b = findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        startActivity(...)
    }
});

第一种选择只是一种解决方法,一种具有相同效果的短路径。 在内部,它只是第二种方式 - 按下按钮,添加一个点击监听器,并在用户点击按钮后立即运行。

当您的布局膨胀时(在您调用setContentView(R.layout.my_layout)之后),android:onClick属性会在内部转换为以下内容:

Button b = findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        goForIt(v);
    }
});

唯一的区别是它适合你。

清单在这种情况下没有任何作用。

答案 3 :(得分:0)

为什么我需要听众? (如果我做)? MainActivity.xml是特定方法的显式指令。或者那是一个&#34;听众&#34;?

认为你有10个按钮需要点击,所以Listener可以处理所有这些类型的按钮点击。

清单在这方面的作用是什么?活动在那里......但出于什么目的?再一次,能够找到类和方法是非常明确的,而不需要像清单那样查询查找....

从清单Android(应用程序管理器)了解您的应用程序的内容,例如,哪个页面是第1页或启动页面。

我对具有类的特定方法的显式属性的Activity XML感到困惑,然后同时,监听器说如果onClick发生了,那么做点什么......他们都试图做同样的事情,不是吗?

是的,他们正在做同样的事情,试着为他们使用听众。