Как определить ссылку на кнопку

В Java, после создания кнопки таким образом:

Button button1= new Button();   

я могу определить ссылку на кнопку таким образом

public void actionPerformed(ActionEvent bottonName){            
            Button name_of_the_button= (Button)bottonName.getSource();
                    //Inside 'name_of_the_button' I have 'button1'
}

Как я могу сделать то же самое на Android? Я пробовал таким образом

 public void onClick(View bottonName) {
            Button name_of_the_button= (Button )bottonName.getSource();
}

Но на андроиде нет метода getSource().

6 ответов

Решение
Button name_of_the_button = (Button)findViewById(R.id.my_btn);

затем

name_of_the_button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if (v.getId() == R.id.my_btn) {

                              // button action here

            }

        }
    });

Вы можете проверить следующее:

Button button1= new Button();

button1.setOnClickListener(this);    

@Override
    public void onClick(View view) {
        // TODO Auto-generated method stub
        if (view.getId() == button1.getId())
        {
            //Perform something
        }

    }

Таким образом, оба идентификатора будут сопоставлены (идентификатор нажатой кнопки и тот, который вы создали с помощью кода Java)

Создать кнопку, а затем добавить это main layout как ребенок, то установить click listener на этой кнопке

Button buyButton = new Button(this);
    buyButton.setText(R.string.button_back);
    buyButton.setLayoutParams(new LayoutParams(
        ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));
    layout.addView(buyButton);
buyButton.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
// Do What you want on click

}});

В Android вид занимает прямоугольную область на экране и отвечает за рисование и обработку событий. Представление является базовым классом для виджетов, которые используются для создания интерактивных компонентов пользовательского интерфейса (кнопок, текстовых полей и т. Д.). Поэтому для вызова кнопки сначала необходимо объявить кнопку.

Button nameButton = (Button)findViewById(R.id.buttononyourXML);

ИЛИ вы можете создать это программно, используя

ViewGroup linearLayout = (ViewGroup) findViewById(R.id.yourLinear);
Button btn = new Button(this);
btn.setText("A Button");
btn.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
linerLayout.addView(btn);

Затем добавьте слушателя на основе вашего требуемого метода

Это твой выбор..

ура

Прежде всего, Android != Corejava, Чтобы ваш метод работал, вам нужно определить onClick android:onClick = "buttonClick" для вашей кнопки в XML.

Тогда ваш метод onClick будет

public void onClick(View view)
{
 Button button = (Button)view; // here is the reference.
}
Button but1 = (Button)findViewById(R.id.button1); within the onCreate of your layout

сопровождаемый слушателем

but1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        if (v.getId() == R.id.but1) {

                          // your code here

        }

    }
});
Другие вопросы по тегам