приложение для Android закрывается - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть этот код Android. У меня есть мой макет для кнопки, определенный в файле XML. Я хочу установить текст для кнопки здесь, получая его по идентификатору. Но приложение принудительно закрывает. Что неправильно?

  package com.action ;
  import android.app.Activity;
  import android.os.Bundle;
  import android.widget.Button;

  public class ActionActivity extends Activity {
     @Override
     public void onCreate(Bundle i){
         super.onCreate(i);
         Button button=(Button) findViewById(R.id.but);
         button.setText("Hey!!");
         setContentView(R.layout.main);
         }
}

Thnx ...

Ответы [ 3 ]

5 голосов
/ 21 сентября 2011

Вы должны использовать setContentView(R.layout.main); перед использованием findViewById().

Если вы этого не сделаете, findViewById() вернет null (поскольку в текущем макете нет вида с этим идентификатором), и вы получите NullPointerException при попытке установить текст на TextView.

Правильная версия onCreate() должна выглядеть следующим образом:

public void onCreate(Bundle i) {
    super.onCreate(i);

    setContentView(R.layout.main);
    Button button = (Button) findViewById(R.id.but);
    button.setText("Hey!!");
}
3 голосов
/ 21 сентября 2011

Поместите setContentView (R.layout.main) перед созданием экземпляра Button.Как это:

    setContentView(R.layout.main);

    Button button=(Button) findViewById(R.id.but);
    button.setText("Hey!!");
0 голосов
/ 22 сентября 2011

Вы должны поместить setContentView (R.Layout.main) перед установкой findViewById (R.id.but). Так как он генерирует исключение нулевого указателя.

...