【发布时间】:2018-06-25 14:33:22
【问题描述】:
几周前我开始学习 Java 以开发原生 Android 应用程序。
过去,我尝试使用 Xamarin 和 C# 进行移动跨平台开发,但一段时间后,我决定放弃它,只使用 Java 直接制作 Android 应用程序。
我注意到 Java 和 C# 之间有很多共同点,但有一点让我很头疼:事件处理机制。
Java 似乎不像 C# 那样在本地管理事件(C# 有委托和事件,这些是特殊类型的委托),而是使用接口来达到目标。
现在,当我在 Android 中创建一个带有点击事件的按钮时,我会看到如下内容:
Button btn = findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// some stuff here
}
});
如果我理解正确的话,btn.setOnClickListener() 是一种用于观察实现onClickListener 接口的对象的方法。在这种情况下,我们正在创建一个实现接口的 View 对象的新实例:new View.OnClickListener()。
onClick(View view) 方法是在OnClickListener 接口中定义的方法,所以我们需要用some stuff 来实现它
onClick()方法中(View view)参数的含义不清楚:什么时候通过?看来我可以实现onClick() 方法而无需传递它。它的意义是什么?
可能我误解了 Java 事件的工作方式。我在网上尝试了很多,但我无法找到关于事件机制如何在 Java 上工作的清晰明了的解释(不涉及 gui Swing、AWT 等元素)。
【问题讨论】:
-
你真的想多了。查看此页面developer.android.com/reference/android/view/…
-
I started few weeks ago to study Java for developing Android apps natively.但是原生应用是用 C++ 编写的,使用的是 NDK。
标签: java android event-handling