2014-11-09 1 views
0

Я новичок в программировании на Java, мне удалось создать небольшой калькулятор в качестве небольшого тестового приложения. Но я думаю, что я использую много кода для своих нужд. Так я уже дал кнопке имя: buttonname Теперь, чтобы изменить его текст при нажатии мне нужно:ANDROID JAVA - Определите все идентификаторы одновременно. (+ создавать простые кнопки)

public class MyActivity extends Activity { 
    Button buttonname; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my); 

     buttomname = (Buttom) findViewById(R.id.buttomname); 

    } 

    public void buttonnameOnClick(View v) { 
     button1.setText ("NewText") 
    } 

} 

(я болты все, что я должен добавить) Так я должен был сделать все, что выше + подключите buttonClick через xml-файл.

Так что мне было интересно, есть ли более простой способ определить все объекты, поэтому мне не нужно делать: Button buttonname; и buttomname = (Buttom) findViewById (R.id.buttomname); все время.

И мне было интересно, есть ли более простой способ автоматического создания событий кнопки.

(я привык к Visual Studio, но теперь я любопытное потерял в Android Studio Так на Visual Studio я просто должен был дважды нажать на кнопку и введите следующую команду:. Buttonname.Text = «NewText»;)

+0

Android/Java-код всегда будет довольно многословен, что это просто природа языка программирования. Конкретную проблему повторного поиска 'findViewById (int)' можно уменьшить с помощью [Butterknife] (https://jakewharton.github.io/butterknife/). – Barend

ответ

-1

вы должны использовать метод onClickListener() для объекта Button. Ваш код похож на эту структуру;

buttonname = (Button)findViewById(R.id.buttonname); 

    buttonname.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        // Perform action on click 
       } 
}); 

Рекомендуем вашему вниманию Button | Android Dev страница Button.

+0

Но для изменения текста мне все равно нужно: Button buttonname; и buttomname = (Buttom) findViewById (R.id.buttomname) ;? – Yeasis

+0

(ссылка, которую вы отправили, говорит, что мне нужно добавить код внутри события onCreate, разве не странно создавать событие внутри другого?) – Yeasis

0

Существует библиотека называется Butter Knife сделать примерно что

Однако, я не уверен, если это действительно необходимо.

О, и вам не обязательно каждый раз искать ту же кнопку. Вы находите его один раз в onCreate и храните в поле.

0

Прежде всего у вас есть опечатка в

buttomname = (Buttom) findViewById(R.id.buttomname);

Это должно быть

buttomname = (Button) findViewById(R.id.buttomname); 

и забыли; в одной строке «не ваша ошибка IDE показала вам!» а также небольшая коррекция в

public void buttonnameOnClick(View v) { 
    button1.setText ("NewText") 
} 

должно быть

buttomname.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      buttomname.setText ("NewText"); 
     } 
    }); 

внутри защищен недействительным OnCreate.

второй метод: А если у вас есть определить андроида: OnClick = "buttonnameOnClick" в XML, то

public void buttonnameOnClick(View v) { 
    button1.setText ("NewText") 
} 

Чтобы быть устранен в

public void buttonnameOnClick(View v) { 
    buttomname.setText ("NewText"); 
} 
+0

Я только что сделал код (так что у меня есть рабочий в Android Studio) , моя вина! Спасибо за ответ. – Yeasis

0

Ваш код отчасти правильно, однако

(Buttom) is wrong change it to (Button) 

Другая вещь

public void buttonnameOnClick(View v) { 
    button1.setText ("NewText") 
} 

может просто быть изменен на:

public void buttonnameOnClick(View v) { 
    Button buttonTemp = (Button)v; 
    buttonTemp.setText ("NewText"); 
} 

Предполагая, что вы вызываете метод из макета XML файла.

0

Вы можете сделать это в цикле, если у вас есть много одинаковых кнопок для обработки

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 

     for (int btn_id : new int[]{ 
       R.id.buttomname 
       , R.id.buttomname2 
       , R.id.buttomname3 
     }) { 
      View v = view.findViewById(btn_id); 
      if (v != null) { 
       v.setOnClickListener(onClickButton); 
      } 
     } 

    } 


    // 
    private View.OnClickListener onClickButton = new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
      // .. handle click 
      if (view.getId()==R.id.buttomname2){ 
      } 
    } 
Смежные вопросы