我有boolean[]
,checkbox[]
和view[]
(impactsb[]
,impactsc[]
,impactsv[]
,每个人的长度都是{ 8.我知道第一个位置是0,下一个是1,等等,最后一个位置是7.由于某种原因,当你尝试对最后一个位置做任何事情时我的应用程序崩溃,换句话说,0- 6工作正常,7从不。我做错了什么?
这是我的这个类的代码,它是一个自己的活动,作为一个主要活动的一部分作为选项卡。抱歉格式化。
package com.citsci.mardeb;
... imports ....
public class Impacts extends Activity implements View.OnClickListener
{
static boolean[] impactsb = new boolean[] {false, false, false, false, false, false, false, false};
@Override
public void onCreate (Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.impacts);
View[] impactsv = new View[]
{
findViewById(R.id.gas_oil),
findViewById(R.id.ghost_fishing),
findViewById(R.id.marsh_damage),
findViewById(R.id.nav_haz),
findViewById(R.id.shell_damage),
findViewById(R.id.waste_pollution),
findViewById(R.id.wild_entang),
findViewById(R.id.other)
};
CheckBox[] impactsc = new CheckBox[impactsv.length];
for (int i = 0; i < 8; i++)
{
impactsc[i] = (CheckBox) impactsv[i];
impactsc[i].setTag(i);
impactsc[i].setOnClickListener(this);
}
}// end of onCreate
@Override
public void onClick(View v)
{
switch ((Integer)v.getTag())
{
case (0):
impactsb[0] =! impactsb[0];
break;
case (1):
impactsb[1] =! impactsb[1];
break;
case (2):
impactsb[2] =! impactsb[2];
break;
case (3):
impactsb[3] =! impactsb[3];
break;
case (4):
impactsb[4] =! impactsb[4];
break;
case (5):
impactsb[5] =! impactsb[5];
break;
case (6):
impactsb[6] =! impactsb[6];
break;
case (7):
impactsb[7] =! impactsb[7];
EditText view = (EditText) findViewById(R.id.other);
if (view.getVisibility() == View.INVISIBLE)
view.setVisibility(View.VISIBLE);
else
view.setVisibility(View.INVISIBLE);
break;
}
}
}// end of Impacts.class
错误代码:
ActivityThread.performLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1768
ActivityThread.handleLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1784
ActivityThread.access$1500(ActivityThread, ActivityThread$ActivityClientRecord, Intent) line: 123
ActivityThread$H.handleMessage(Message) line: 939
有关
答案 0 :(得分:3)
您的问题不是索引或数组长度 问题是你有一个名为“other”的TextView和一个名为“other”的CheckBox,而findViewById在你调用它时不知道要抓哪个。 将TextView id更改为“other_text”,您的问题就会得到解决。
答案 1 :(得分:1)
我对你的问题有点不确定,这里有大量的代码,看起来像是两个无关的问题。至于数组索引问题:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 长度= 8
所以长度= 8,如果你做一个for循环,如:
for (int i=0; i<8; i++)
值的范围是8个数字0-7,因为你使用的是小于0。所以只需将长度设置为您创建的大小,然后像上面那样编写for循环。