Куда помещать метод, используемый в XML, когда он закачивается с layoutinflater? - PullRequest
0 голосов
/ 16 марта 2019

У меня есть 10 похожих кнопок в макете (create_new.xml), которые будут различаться по атрибуту тега:

<Button
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:tag="one"
    android:onClick="numberClicked" />

Я хотел бы использовать один и тот же метод для всех них.

Проблема: это построено с помощью AlertDialog:

private void openCreateDialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    View createNumbersView = getLayoutInflater().inflate(R.layout.create_new, null);
    // more code
}

... и я не знаю, куда поместить этот метод (numberClicked)

Я пытался написать это просто в упражнении, но потом не смог найти метод.

1 Ответ

0 голосов
/ 16 марта 2019

Не используйте атрибут onClick XML (как и всегда). Определите OnClickListener программно и назначьте его каждой кнопке, используя setOnClickListener(). Вы можете сделать все это прямо в вашем openCreateDialog() методе.

View.OnClickListener buttonOnClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {  
          //insert contents from numberClicked() method here
    }
};

button1.setOnClickListener(buttonOnClickListener);
...