在AVD上测试时应用程序关闭

时间:2011-11-04 14:45:55

标签: android nullpointerexception runtime-error

我正在尝试学习Android,我正在做一个涉及两个按钮和textview的简单练习。但是,当我尝试在电子邮件程序中运行应用程序时,应用程序将被强制关闭。

以下是代码:

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>

欢迎任何帮助。

谢谢和问候,毛罗。

3 个答案:

答案 0 :(得分:2)

因为错误是

  

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

所以请查看文件第25行的内容。

我想这是以下几行之一。

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

所以请检查你的main.xml是否为两个按钮设置了android:id。

答案 1 :(得分:1)

它说你得到NullPointerException。我想那是因为btnRedbtnBlue上的空是空的。检查并查看是否从findViewById获得了有效值。

答案 2 :(得分:0)

我在main.xml上找到了这一行的错误

style="@style/red"

我删除了,一切都很好。