Переменная OnClick Listener для Android - PullRequest
4 голосов
/ 25 июня 2010

Есть ли способ иметь 1 onClick Lister для многих кнопок, где я могу бросить оператор case, чтобы делать вещи, основываясь на том, какие кнопки были нажаты.

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

Ответы [ 4 ]

6 голосов
/ 25 июня 2010
Button btn1, btn2;
public void onCreate(Bundle b)
{
    // here you do normal things like assigning a
    // content view to the activity, initiate buttons, etc.

    // then you assign the same listener to both buttons
    btn1.setOnClickListener(yourListener);
    btn2.setOnClickListener(yourListener);
}

// declare a OnClickListener that will execute different actions
// depending on the view that was clicked
View.OnClickListener yourListener = new View.OnClickListener(){
    public void  onClick  (View  v){
        if( v == btn1 ){
            // do something 
        }
        elseif( v == btn1 ){
            // do another thing
        }
    }
};
1 голос
/ 25 июня 2010

Если вы используете версию SDK 1.6+, вы можете использовать android: onClick для установки обработчика onClick представления. В вашей деятельности у вас должен быть метод со следующей подписью. Представление - это представление, по которому щелкнули.

void onClick(View v) {
    switch(v.getId()) {
        case R.id.button1:
            //do something fantastic;
            break;
    }
}
0 голосов
/ 25 июня 2010

Кроме того, вы можете указать метод для вызова в XML:

<Button android:id="@id/button" android:text="@string/button" android:onClick="someMethod" />
0 голосов
/ 25 июня 2010
public class MainActivity extends Activity implements View.OnClickListener{

btnXXX.setOnClickListener(this);

public void onClick(View v) {
    if (v.getId()==R.id.btnXXX){
        dialog.show();
    } else {
        handleOtherViews(v);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...