问题1:不幸的是,你说的最直观的是在Android中使用最少的。 据我所知,您应该分离UI(XML)和计算功能(Java类文件)。 它还使调试更容易。 通过这种方式阅读并考虑Android imo实际上要容易得多。
问题2:我相信主要使用的两个是#2和#3。 我将使用Button clickButton作为示例。
2
是一个匿名类的形式。
Button clickButton = (Button) findViewById(R.id.clickButton);
clickButton.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
***Do what you want with the click here***
}
});
这是我最喜欢的,因为它的onClick方法就在使用findViewById设置按钮变量的旁边。 处理此clickButton Button View的所有内容都位于此处,看起来非常整洁。
我的同事评论的一个骗局是,想象你有很多需要onclick听众的观点。 你可以看到你的onCreate的篇幅会很长。 这就是他喜欢使用的原因:
3
说你有,5 clickButtons:
确保您的Activity / Fragment实现OnClickListener
// in OnCreate
Button mClickButton1 = (Button)findViewById(R.id.clickButton1);
mClickButton1.setOnClickListener(this);
Button mClickButton2 = (Button)findViewById(R.id.clickButton2);
mClickButton2.setOnClickListener(this);
Button mClickButton3 = (Button)findViewById(R.id.clickButton3);
mClickButton3.setOnClickListener(this);
Button mClickButton4 = (Button)findViewById(R.id.clickButton4);
mClickButton4.setOnClickListener(this);
Button mClickButton5 = (Button)findViewById(R.id.clickButton5);
mClickButton5.setOnClickListener(this);
// somewhere else in your code
public void onClick(View v) {
switch (v.getId()) {
case R.id.clickButton1: {
// do something for button 1 click
break;
}
case R.id.clickButton2: {
// do something for button 2 click
break;
}
//.... etc
}
}
这种方式,因为我的同事解释他的眼睛更整洁,因为所有onClick计算都在一个地方处理,而不是拥挤onCreate方法。 但我看到的缺点是:
观点自己,
并且可能必须将onClick方法使用的onCreate中的任何其他对象放入字段中。
如果您想了解更多信息,请与我们联系。 我没有完全回答你的问题,因为这是一个很长的问题。 如果我找到一些网站,我会扩展我的答案,现在我只是给一些经验。