2015-03-11 2 views
-2

Я хочу, чтобы два кнопки прослушивания нажали кнопку, и как onclicklistener должны быть разными. Есть какой-либо способ сделать это.? Невозможно использовать функцию для вызова от первого до второго. Когда я использую это, я получаю только вывод из второго. Я хочу оба вывода.Как подключить два Click Listener к кнопке в android?

Я работаю над заданием на скрининг, поэтому всякий раз, когда вы нажимаете на кнопку, он говорит мне, что пользователь нажимал на это в 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

Почему вы хотите это сделать? Чего вы пытаетесь достичь? – CAS

+0

Я работаю над заданием на скрининг, поэтому всякий раз, когда вы нажимаете на кнопку, он говорит мне, что пользователь нажимал на это в Logcat, а также кнопку выполняет свою обычную задачу. –

+0

И что еще вы хотите видеть в своем logcat, кроме нажатия этой кнопки? Вы имеете в виду, что у вас будут другие кнопки или представления, которые при нажатии вы хотите, чтобы они сделали свою собственную работу + показ в вашем logcat, что было нажато? – CAS

ответ

0

Вы не можете сделать это. Установка второго OnClickListener удаляет первый.

Вот почему функция называется setOnClickListener() вместо addOnClickListener()

Как вы говорите, вы можете вызвать две функции из onClick()

Edit:

На ваши изменения, вы говорите, что вы хотите показывается сообщение, когда нажимается кнопка.

Вы можете добавить функциональность loggging, что вам нужно, прежде чем делать что-нибудь еще на мероприятии, просто делает

@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 
    } 
}); 
+0

Невозможно это сделать ..? –

+0

@Rishi Meena Нет, но я думаю, что проблема в вашем дизайне. Почему вы не можете использовать две функции? Что ты пытаешься сделать? – antonio

+0

Я работаю над некоторой задачей проверки, поэтому всякий раз, когда вы нажимаете на кнопку, мне говорят, что пользователь щелкнул по ней в Logcat, а также выполнил свою обычную задачу. –

0

Вы можете использовать функцию в OnClickLis Tener как-

 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 
} 
+0

. Это проблема, которую я не могу использовать так, по какой-то причине. –

+1

Тогда вы должны четко объяснить, что является вашей проблемой. Почему вы не можете использовать это. После этого мы можем вам помочь – Kunal

+0

Я работаю над некоторой задачей проверки, поэтому всякий раз, когда вы нажимаете на кнопку, я говорю, что пользователь щелкнул по ней в Logcat, а также выполнил свою обычную задачу. –

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 события на другие виды

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. 
    } 

} 
Смежные вопросы