使用xml我可以定义一个onClick方法,如果我点击视图就会调用它:
android:onclick="onClick"
public void onClick(View v)
此方法必须在Activity类中定义,该类是可见的。现在我有许多使用不同onClick方法的控件。这使得Activity类非常混乱,那么有没有办法在另一个类中定义这个方法?
当然我可以在类本身中使用不同的类或onClickListener但是使用xml它非常简单。使用onClickListeners会出现一些“未使用的代码”,因为Java目前没有lamda表达式,这也让人感到困惑。我认为xml是一种快速而清晰的方法,但如果你现在有这么多方法,那就不行了。
答案 0 :(得分:2)
查看源代码看起来它必须是扩展用于创建View的Context类的类中的方法:
http://androidxref.com/4.4_r1/xref/frameworks/base/core/java/android/view/View.java#3780
请看这一行:
getContext().getClass().getMethod( ... )
正在对getContext()
进行反射您可以像其他答案建议一样,打开视图ID,并在其他类中调用函数。或者,如果您的应用程序很复杂,可能会将您的布局划分为片段?
答案 1 :(得分:0)
我不完全确定你想要什么,但你可以使用不同的方法名称,它不一定是“onClick”
除此之外,我相信他们确实必须参加那项活动。
答案 2 :(得分:0)
在托管该布局的Activity上调用XML中定义的任何onClick方法。如果你真的想这样做,你可以将所有传入的点击转发到另一个类,但最好的方法是OnClickListener或为每个按钮使用不同的onClick方法名称。
答案 3 :(得分:0)
make activity implement onclick listener and implement the method like below.
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int key = v.getId();
switch (key) {
case R.id.message_field:
// handle click
break;
default:
break;
}
}