2011-11-04 3 views
0

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

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

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);      
     } 
    } 
} 

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

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

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

+0

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

+0

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

2

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

11-04 11: 34: 42,377: Е/AndroidRuntime (376): Вызванный: java.lang.NullPointerException 11-04 11: 34: 42.377: Е/AndroidRuntime (376): в mi.entrenamiento.OrejanoX.CambiarColorActivity.onCreate (CambiarColorActivity.java:25)

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

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

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

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

+0

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

+1

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

0

Я нашел ошибку, что была эта линия на main.xml

style="@style/red" 

Я удалил и все было хорошо.

Смежные вопросы