为onClick创建函数和创建监听器,哪个更好



我从不同的渠道观看了不同的android开发教程。

其中一个为onClick事件生成函数,然后将它们添加到View的属性中。

示例:

public void change(View v){
((TextView) findViewbyId(R.id.example)).setText("Changed");
}

然后将其添加到按钮的属性中。

但另一个实现了View.OnClickListener接口,它变成了这样:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView output;
private EditText edit;
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.change: {
Toast.makeText(this, "Change button was clicked", Toast.LENGTH_SHORT).show();
} break;
case R.id.input:{
Toast.makeText(this, "Typing..", Toast.LENGTH_SHORT).show();
} break;
default: break;
} 
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = findViewById(R.id.change);
btn.setOnClickListener(this);
((Button) findViewById(R.id.nothing)).setOnClickListener(this);
edit = findViewById(R.id.input);
edit.setOnClickListener(this);
output = findViewById(R.id.output);
}

我是安卓开发的新手,所以我想知道哪一个更好?哪个更专业?为什么?非常感谢。

假设您使用的是XML属性

android:onClick="change"

这两种方式都是合适的,你可以选择更合适的。如果你有一个并且只有一个可点击的View,那么定义指向某个方法的XML属性会产生更少的代码,但如果你有更多的代码,那么通过Java代码管理所有这些代码(例如在运行时删除/禁用点击处理(并在一个onClick方法中处理所有点击可能会更容易

请注意,如果你的Activity中有implements View.OnClickListener,那么你也可以写

android:onClick="onClick"

然后您就不必在代码中调用setOnClickListener(this)了。通常,这使得您甚至不必使用findViewById和引用View

最新更新