使用向量时,android应用程序崩溃

时间:2013-11-18 16:07:40

标签: java android xml

当我点击按钮1时,我的android活动不断崩溃,它应该在名为numregist的向量上保存1,并在textView上显示“第一个数字”,我不知道我做错了什么,我将不胜感激任何帮助,这是java代码:

package com.example.holamundo;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;



public class Mesa1_1 extends MainActivity {
int counter=0;
int[] numregist;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub

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

    numregist=new int[0];
}

public void CambiarValorBoton1(View view){
    numregist[counter]=1;
     final TextView t=(TextView)findViewById(R.id.textView1); 
     t.setText("first number");
}
public void CambiarValorBoton2(View view){
    numregist[counter]=2;
     final TextView t=(TextView)findViewById(R.id.textView1); 
     t.setText("second number");
}
/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

}
public void cerrar(View view){
    finish();
}

}

这是我的XML代码,直到按钮2 :(按钮1被命名为按钮2,按钮2被命名为按钮3,对不起)

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ScrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="20dp"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:text="0" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_marginTop="20dp"
            android:layout_weight="1" >

            <Button
                android:id="@+id/button2"
                android:layout_width="0dp"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:onClick="CambiarValorBoton1"
                android:text="1" />

            <Button
                android:id="@+id/button3"
                android:layout_width="0dp"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:onClick="CambiarValorBoton2"
                android:text="2" />

2 个答案:

答案 0 :(得分:4)

numregist=new int[0];应为numregist=new int[1];

<小时/> 使用numregist=new int[0];,您将声明一个可容纳0个元素的数组。

因此,在尝试访问第一个元素时,您将获得ArrayIndexOutOfBoundsException: 0,从而使您的应用崩溃。

这不是你想要的。你想拥有一个可以容纳一个元素的数组。

请记住,数组在Java中是0基索引。因此,要访问numregist的第一个元素,您需要调用numregist[0]

这个数字可能会有所帮助:

enter image description here

答案 1 :(得分:0)

首先,摆脱

public static void main(String[] args) {
// TODO Auto-generated method stub
}

方法。然后 - 你在这里初始化一个0元素的数组numregist=new int[0];,而你应该至少有一个元素 - 把它改成numregist=new int[1];它应该有效。如果没有,请粘贴logcat的输出,以便我们提供更多帮助。