当我点击按钮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" />
答案 0 :(得分:4)
numregist=new int[0];
应为numregist=new int[1];
<小时/> 使用
numregist=new int[0];
,您将声明一个可容纳0个元素的数组。
因此,在尝试访问第一个元素时,您将获得ArrayIndexOutOfBoundsException: 0
,从而使您的应用崩溃。
这不是你想要的。你想拥有一个可以容纳一个元素的数组。
请记住,数组在Java中是0基索引。因此,要访问numregist
的第一个元素,您需要调用numregist[0]
。
这个数字可能会有所帮助:
答案 1 :(得分:0)
首先,摆脱
public static void main(String[] args) {
// TODO Auto-generated method stub
}
方法。然后 - 你在这里初始化一个0元素的数组numregist=new int[0];
,而你应该至少有一个元素 - 把它改成numregist=new int[1];
它应该有效。如果没有,请粘贴logcat的输出,以便我们提供更多帮助。