Несколько действий с использованием одного и того же слушателя - PullRequest
2 голосов
/ 03 декабря 2010

Я получил 4 актива, все из которых содержат нижний колонтитул xml, который содержит 4 кнопки (по одной на каждое действие).Теперь я хотел бы настроить onclicklistener для этих кнопок (это меню, созданное самостоятельно в нижнем колонтитуле).

Вопрос в том, как использовать слушатели, чтобы я мог повторно использовать код?У меня есть две идеи:

  1. Создать класс, который реализует onclicklistener, и в каждом упражнении я получаю кнопки, а затем создаю новый экземпляр класса слушателя и выполняю button.setOnClickListener (onClickListener)Проблема в том, что в классе слушателя, как я могу проверить, какая кнопка вызвала событие?И как мне создать намерение начать действие, обычно я бы сделал: Intent intent = new Intent (FromActivity.this, ToAcitivty.class) Но у меня нет ссылки на FromActivity.

  2. Создайте базовый класс, который расширяется от действия, а затем 4 актива будут расширяться от базового класса.Затем я хотел бы настроить слушателей в базовом классе.Проблема в том, что я не могу получить ссылки на кнопки, выполнив Button button1 = (Button) findViewById (R.id.menu_button1);button1 будет нулевым.Я даже не вызывал setEventView, потому что это должно быть сделано в деятельности, а не в базовом классе.

Есть идеи?

Спасибо

1 Ответ

1 голос
/ 03 декабря 2010

Код здесь тот же:

    public class MyClass extends Activity implements View.OnClickListener{
        btnA=(Button)findViewById(R.id.btnA);
        btnA.setOnClickListener(this);
        btnB=(Button)findViewById(R.id.btnB);
        btnB.setOnClickListener(this);


    }
    @Override
    public void onClick(View v)
    {
        Button clickedButton = (Button) v;
        switch (clickedButton.getId())
        {
            case R.id.btnA:
                Intent regIntent = new Intent(Home.this,Registration.class);
                startActivityIfNeeded(regIntent, 1);
                break;
            case R.id.btnB:
                //Some code
                break;
        }
    }

(отредактировано, поскольку исходная первая строка разбита на формат кода.

...