Как лучше всего добавить кнопку?

Я новичок в разработке под андроид. У меня есть сомнения. Я знаю, что вы можете добавить кнопку и инициализировать ее как

Button b1=(Button) findViewById(R.id.button1);

и я также могу указать имя операции в файле XML.

  android:onClick="click_event"

Я сомневаюсь, что это лучший и эффективный способ? как будто он говорит, что лучше использовать ресурс @string вместо жестко закодированного.


person Jacob Thazhath    schedule 19.08.2013    source источник


Ответы (1)


Я думаю, вы запутались. Примеры, которые вы приводите, это две разные вещи.

Добавление кнопки

Эта линия

Button b1=(Button) findViewById(R.id.button1);

не добавляет Button. Он объявляет и инициализирует экземпляр Button, который ссылается на Button в вашем текущем раздутом xml, который имеет id из button1

Итак, в вашем xml у вас будет где-то

<Button
     android:id="@+id/button1"
     <!-- other properties -->
/>

Вы можете добавить Button программно с помощью

Button bt1 = new Button(this);
// give it properties

Но это вообще проще сделать в xml потому что тут надо программно задавать ему параметры, свойства и добавлять в надутый layout

По клику

Что касается onClick(), это зависит от того, что вы считаете самым простым и лучшим в вашей ситуации. Мне нравится часто объявлять это в xml, но вы можете сделать это несколькими способами. Используя этот метод, вы просто должны быть уверены, что у вас есть такая функция, которая является public и принимает только один параметр, и этот параметр должен быть View

 public void clickEvent(View v)
{
    // code here
}

Я также изменил имя, чтобы ваш xml выглядел как

<Button
     android:id="@+id/button1"
     <!-- other properties -->
     android:onClick="clickEvent"/>

Вы также можете установить onClick() в Java с помощью чего-то вроде

Button b1=(Button) findViewById(R.id.button1);
b1.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        // code here
    }
});

or

 Button b1=(Button) findViewById(R.id.button1);
b1.setOnClickListener(this);

    @Override
    public void onClick(View v)
    {
        // code here
    }

Обратите внимание, что в последнем случае вам нужно будет добавить implements OnClickListener в объявление Activity.

public class MyActivity extends Activity implements OnClickListener
{

Вы также можете создать свой собственный клик Listener, изменив его на что-то вроде

b1.setOnClickListener(myBtnClick);

затем создайте его экземпляр с чем-то вроде

public OnClickListener myBtnClick = new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        // click code here      
    }
};

Вы можете использовать это для нескольких Button и включить id или проверить параметр View, чтобы узнать, какой Button был нажат, или создать отдельные Listeners для разных Button.

person codeMagic    schedule 19.08.2013