Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的android studio项目有问题_Java_Android - Fatal编程技术网

Java 我的android studio项目有问题

Java 我的android studio项目有问题,java,android,Java,Android,所以这个代码应该首先创建16个按钮,然后随机选择其中一个并将其颜色更改为红色。现在,用户应该单击红色按钮,然后新按钮变为红色 在android studio中,一切似乎都正常工作,但当我想用模拟器打开它时,应用程序立即崩溃 我想知道这里是否有人知道该怎么做 MainActivity.java: package com.example.sixteenbuttons; 导入android.graphics.Color; 导入android.support.v7.app.AppActivity; 导入

所以这个代码应该首先创建16个按钮,然后随机选择其中一个并将其颜色更改为红色。现在,用户应该单击红色按钮,然后新按钮变为红色

在android studio中,一切似乎都正常工作,但当我想用模拟器打开它时,应用程序立即崩溃

我想知道这里是否有人知道该怎么做

MainActivity.java:

package com.example.sixteenbuttons;
导入android.graphics.Color;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Button;
导入android.widget.LinearLayout;
导入android.widget.Toast;
导入java.util.Random;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout布局=findViewById(R.id.LinearLayout);
//aufgabe1
对于(int i=1;i<17;i++){
最终按钮=新按钮(此按钮);
按钮.setText(“按钮”+i);
布局。添加视图(按钮);
//aufgabe2
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(MainActivity.this,“Klick auf”+button.getText(),Toast.LENGTH\u LONG.show();
}
});
}
setRandom();
setRedButton();
newRedButton();
}
int-currentRandom;
公共void setRandom(){
随机=新随机();
LinearLayout布局=findViewById(R.id.LinearLayout);
currentRandom=random.nextInt(layout.getChildCount()-1);
}
public void setRedButton(){
按钮winButton=findViewById(currentRandom);
winButton.setTextColor(Color.RED);
}
public void newRedButton(){
按钮winButton=findViewById(currentRandom);
winButton.setTextColor(Color.BLACK);
setRandom();
setRedButton();
}
}
activity_main.xml:


AndroidManifest.xml:


问题就在这里
currentRandom
是介于0和按钮数量之间的随机整数,然后您尝试对该随机整数运行
findViewById
。您应该使用getChildAt()而不是
findViewById

Button winButton = (Button)layout.getChildAt(currentRandom);

答案很快!我按照你的建议修改了代码,但不幸的是“布局”是红色的。当鼠标悬停在它上面时,android studio告诉我:“限定符必须是一个表达式”。你定义了它吗<代码>线性布局布局=findViewById(R.id.LinearLayout)setRandom和setButton现在都能很好地工作,谢谢您的帮助。然而,newRedButton似乎根本不起作用。通常在点击红色按钮后,它应该选择一个新的红色按钮,但不知为什么它没有。按钮一直是红色的
Button winButton = (Button)layout.getChildAt(currentRandom);