我想在一个按钮中附加两个单击侦听器,并且两个onclicklistener应该是不同的。有没有办法做到这一点。无法使用功能从第一个到第二个进行呼叫。当我使用它时,我只从第二个输出。我想要两个输出。
我正在进行一些筛选任务,所以无论何时使用单击按钮,它都会告诉我用户在Logcat中单击此按钮并按钮执行正常任务。
首先是:
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("First Click" , "Clicked on button 1");
}
});
第二是:
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v2) {
if (v2 instanceof Button) {
Log.i("User Clicked a checkbox with value ", " : " + ((Button) v2).getText().toString());
}
}
});
答案 0 :(得分:0)
你做不到。设置第二个OnClickListener将删除第一个。
这就是为什么函数被称为setOnClickListener()
而不是addOnClickListener()
正如您所说,您可以从onClick()
编辑:
在您的编辑中,您说要在单击按钮时显示消息。
您可以在对事件执行任何其他操作之前添加所需的记录功能,只需执行
即可@Override
public void onClick(View v) {
// Log something
// Your functionality
}
或者您可以创建一个实现View.OnClickListener
public class MyOnClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
// Log something
}
}
然后,在您的活动上:
btn.setOnClickListener(new MyOnClickListener() {
@Override
public void onClick(View v) {
super.onClick(v);
// Your functionality
}
});
答案 1 :(得分:0)
您可以在OnClickListener中使用函数like-
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
run1();
run2();
}
});
private void run1(){
//Your first functionality
}
private void run2(){
//Your second functionality
}
答案 2 :(得分:0)
如果我理解正确,你可以这样做:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dothings(); //what you are trying to achieve with this button click
showViewInLogCat(v); //to show you the view in the logcat
}
}
其中showViewInLogCat()
是一个函数,用于显示在logcat中单击了哪个视图:
public void showViewInLogCat(View view) {
if (view instanceof Button) {
Log.i("User Clicked a checkbox with value ", " : " + ((Button) view).getText().toString());
}
//and add the other if
}
您可以在其他观看的每个OnClick
事件中调用此函数
答案 3 :(得分:0)
可能你想做这样的事情......!
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
Log.i("First Click" , "Clicked on button 1");
// add a boolean here to check if you want to do the task or not.
doTask = true;
doGeneralTask(doTask); //to show you the view in the logcat
}
}
并在doGeneralTask(doTask)
做类似的事情。
public void doGeneralTask(boolean doTask) {
if (doTask) {
// do whatever generalized tasks you need.
}
}