Несколько мероприятий, использующих тот же слушатель

StackOverflow https://stackoverflow.com/questions/4344469

  •  30-09-2019
  •  | 
  •  

Вопрос

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

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

  1. Создайте класс, который реализует OnClickListener и в каждом виду, я бы получил кнопки, а затем создать новый экземпляр класса прослушивателя и сделать кнопку. WSETONCLICKLICHLISTENER (OnClickListener) Проблема в том, что в классе слушателя, как бы я проверил, какая кнопка называется мероприятие? И как бы я создал намерение начать деятельность, обычно я бы сделал: намеренные намерения = новое намерение (отактивность. Это, ToCitivty.Class), но у меня нет ссылки на отвращение.

  2. Создайте базовый класс, который простирается от активности, а затем 4 Actives продлится из базового класса. Затем я хотел бы настроить слушателей в базовом классе. Проблема вот в том, что я не могу получить ссылки на кнопки, выполняя кнопку Button1 = (кнопку) FindViewbyID (R.ID.Menu_Button1); Button1 будет нулевой. Я даже не назвал SeteventView, потому что это должно быть сделано в действии не в базовом классе.

Есть идеи?

Спасибо

Это было полезно?

Решение

Тот же код здесь:

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

(отредактировано как первоначальная первая строка нарушена в формате кода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top