Завершение работы приложения при тестировании на AVD

#android #nullpointerexception #runtime-error

#Android #исключение nullpointerexception #ошибка во время выполнения

Вопрос:

я пытаюсь изучить Android и выполняю простое упражнение, включающее две кнопки и текстовое представление. Однако, когда я пытаюсь запустить приложение в эмуляторе, приложение принудительно завершает работу.

Ниже приведен код:

 public class CambiarColorActivity extends Activity 
implements View.OnClickListener {
    Button btnRed;
    Button btnBlue;
    TextView text;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        setContentView(R.layout.main);
        TextView text = (TextView)findViewById(R.id.textView1);
        btnRed=(Button)findViewById(R.id.button1);
        btnBlue=(Button)findViewById(R.id.button2);                 
        btnRed.setOnClickListener(this);
        btnBlue.setOnClickListener(this);                   
    }

    public void onClick(View view) {
        changeColor();
    }

    private void changeColor() {
        if(btnRed.isPressed()) {
            text.setBackgroundResource(Color.RED);
        } else {
            text.setBackgroundResource(Color.BLUE);                     
        }
    }
}
  

И это ошибки, которые я обнаружил в журнале в Eclipse:

 11-04 11:34:42.377: E/AndroidRuntime(376): Caused by: java.lang.NullPointerException
11-04 11:34:42.377: E/AndroidRuntime(376): at mi.entrenamiento.OrejanoX.CambiarColorActivity.onCreate(CambiarColorActivity.java:25)
  

Вот моя часть моего main.xml

 <LinearLayout
    android:id="@ id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <Button
        android:id="@ id/button1"
        style="@style/red"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:drawableLeft="@drawable/red"
        android:text="@string/red" />

    <Button
        android:id="@ id/button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:drawableLeft="@drawable/blue"
        android:text="@string/azul" />

</LinearLayout>
  

Любая помощь будет приветствоваться.

Спасибо и с уважением, Мауро.

Ответ №1:

Поскольку ошибка

11-04 11:34:42.377: E / AndroidRuntime(376): Вызвано: java.lang.Исключение NullPointerException 11-04 11:34:42.377: E / AndroidRuntime(376): в mi.entrenamiento.OrejanoX.CambiarColorActivity.onCreate(CambiarColorActivity.java:25)

поэтому, пожалуйста, посмотрите, что находится в строке 25 вашего файла.

Я думаю, это одна из следующих строк.

 btnRed.setOnClickListener(this);
btnBlue.setOnClickListener(this);
  

поэтому, пожалуйста, проверьте в своем main.xml независимо от того, установили ли вы android:id для двух кнопок.

Комментарии:

1. У меня есть andoird: id для кнопок teo. Проверьте исходное сообщение для получения новой информации.

2. Кажется, что вы получаете ошибку в, changeColor() потому что в onCreate() вы пишете TextView text = (TextView)findViewById(R.id.textView1); , поэтому текст является локальной переменной в onCreate() , а не переменной экземпляра. Также обратите внимание, что setBackgroundResource() принимает параметр в качестве идентификатора ресурса, поэтому здесь будет ошибка. Вы должны написать text.setBackgroundColor(Color.RED)

Ответ №2:

В нем говорится, что вы получаете исключение NullPointerException. Я думаю, это потому, что на btnRed или btnBlue были нулевыми. Проверьте и посмотрите, получаете ли вы действительное значение от findViewById .

Комментарии:

1. Я добавил main.xml к исходному сообщению. Я получаю нулевое значение, но могу понять, почему.

2. Для этого есть несколько причин; Google «findViewById возвращает null», и я уверен, что вы найдете некоторые.

Ответ №3:

Я обнаружил ошибку, это была эта строка на main.xml

 style="@style/red"
  

Я удалил, и все было в порядке.