我是 Android 环境的新用户我只是想知道如果所需参数的类型为{{OnClick(View v)
,this
方法为何会接受View
1}}和我的方法扩展Activity
? View
和Activity
之间是否存在关系?请参阅代码以使问题更清楚。
...
public class MainActivity extends Activity implements OnClickListener {
private Button btn1;
private Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState){
...
btn1 = (Button)findViewById(R.id.button1);
btn2 = (Button)findViewById(R.id.button2);
// Below are the methods calling which confuses me
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
...
}
public void onClick(View v) {
int id = v.get();
switch(id) {
case R.id.button1:
//statement for button1
case R.id.button2:
//statement for button2
...
}
}
}
编辑:这个问题具有误导性,只是因为忽略了setOnClickListener(...)'与' onClick(...)'相同。我只是不知道如何关闭这个问题。
答案 0 :(得分:2)
看,
首先了解这两行
View.OnClickListener - Interface definition for a callback to be invoked when a view is clicked.
onClick() - Called when a view has been clicked.
现在,
您的活动实施OnClickListener
public class MainActivity extends Activity implements OnClickListener{}
所以当你实现它时......有一个方法自动实现到类,称为onClick()
因此,当您将this
关键字传递给任意视图的onClickListener
时。这意味着您实际上正在调用onClick()
方法..
btn1.setOnClickListener(this); //calling onClick() method for button1
btn2.setOnClickListener(this); //calling onClick() method for button2
onClick()
方法中的,
你只需找到你的ID并编写你想要对视图做什么的代码..
public void onClick(View v){
int id=v.get(); // getting ID of Clicked View
switch(id){
case R.id.button1:
//called when you press button 1
//write your code
break;
case R.id.button2:
//called when you press button 2
//write your code
break;
...
}
有关onClickListener()的详细信息,请访问此网站/博客 https://stand2code.blogspot.in/2016/12/multiple-buttons-onclicklistener-android.html
答案 1 :(得分:0)
您正在推广Activity
,但您正在实施OnClickListener
,而onClick()
是OnClickListener
接口的方法。因此您必须实施其onClick
class
中的方法因此this
没有引起任何冲突。请参阅此内容以了解接口Is there more to an interface than having the correct methods
答案 2 :(得分:0)
setOnClickListener
将OnClickListener
个实例作为参数,OnClickListener
是一个内容为onClick()
方法的界面。
当您在此处传递setOnClickListener(this);
当前上下文时,该参数必须是实现OnClickListener接口的某个对象的实例。
有关详细信息,请参阅:Android - How to set a named method in button.setOnClickListener()