在我的应用程序中,我试图让我的 Activity 更改按钮上的文本。当我在 onCreate() 中调用 ansGen() 方法时,出现黑屏。 一段时间后,出现错误并且应用程序关闭。
但是当onCreate()中的ansGen()方法调用被注释时,它显示正常(显然没有ansGen()方法的功能。
这是我的代码与 ansGen() 方法(没有导入和 onCreateOptionsMenu):
public class QuizActivity extends Activity
{
Button Answer1;
Button Answer2;
Button Answer3;
Button Answer4;
String[] QuestionArray =
{ "What element has atomic number 1?",
"What is the second most abundant element on Earth?",
"Element with symbol Li ?", "Has 4 protons?" };
String[] AnswerArray =
{ "Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon",
"Nitrogen" };
public String tempStringy="";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
int AnsArraylen=AnswerArray.length;
Answer1 = (Button) findViewById(R.id.Answer1);
Answer2 = (Button) findViewById(R.id.Answer2);
Answer3 = (Button) findViewById(R.id.Answer3);
Answer4 = (Button) findViewById(R.id.Answer4);
//AnswerArray[randAnswers[0]]
Answer1.setText("Hello");
Answer2.setText("Hello");
Answer3.setText("Hello");
Answer4.setText("Hello");
**ansGen(AnsArraylen);**
}
public void ansGen(int AnsArraylen)
{
Random randomizer=new Random();
int[] AnsVal={-1,-1,-1,-1};
int numchecker=0;
for (int x=0;x<4;x+=1)
{
int tempVal=randomizer.nextInt(AnsArraylen);
if (tempVal==AnsVal[0])
{
numchecker=1;
}
if (tempVal==AnsVal[1])
{
numchecker=1;
}
if (tempVal==AnsVal[2])
{
numchecker=1;
}
if (tempVal==AnsVal[3])
{
numchecker=1;
}
if (numchecker==0)
{
AnsVal[x]=tempVal;
}
if (numchecker==1)
{
x-=1;
}
}
tempStringy=AnswerArray[AnsVal[0]];
//Answer1.setText("Hup");
}
我到处寻找都没有结果。
感谢您的帮助!
最佳答案
当您调用randomizer.nextInt(AnsArraylen)
时,您可以获得0到3之间的值(含)。如果这个 tempVal
为 0,那就没问题,因为您只需将 AnsArray[x] 设置为当前的 tempVal
即可。但是,例如,当 tempVal
为 1 时会发生什么?除了最后一个将 x 设置为 -1 之外,您不会进入这些 if
中的任何一个,因此在下一次循环迭代中它将再次变为 0。除了这对你是否有意义之外,错误就在下一行。在这种情况下你正在做:
tempStringy=AnswerArray[AnsVal[0]];
但是AnsVal[0]
仍然是-1
。因此,您正在尝试执行以下操作:
AnswerArray[-1]
这就是您收到异常的地方。将其包装在 try-catch 中并打印堆栈跟踪以进行确认。也许您想将 AnsVal
初始化为:
int[] AnsVal={0,1,2,3};
关于java - Android 应用程序黑屏( onCreate() ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21539765/