不能用java随机设置新按钮
我试图让我的按钮改变为一个不同的图片和一套dif的法律 这是一个字母表应用程序,我目前正在工作,它在市场上。。。。我想让它随机改变图片,然后在整个程序中跟随alphebet,但我不知道如何让按钮随机,所以这里是我使用的基本代码 包com.alphafree不能用java随机设置新按钮,java,android,button,random,imagebutton,Java,Android,Button,Random,Imagebutton,我试图让我的按钮改变为一个不同的图片和一套dif的法律 这是一个字母表应用程序,我目前正在工作,它在市场上。。。。我想让它随机改变图片,然后在整个程序中跟随alphebet,但我不知道如何让按钮随机,所以这里是我使用的基本代码 包com.alphafree import java.util.Random; import android.app.Activity; import android.app.AlertDialog; import android.content.Intent; impo
import java.util.Random;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class letterA extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int[] _26Num = new int[6];
int i, number;
Random r1 = new Random(); // Random generator
for (i = 1; i < _26Num.length; i++) { // Pick 6 Random Numbers
do {
number = (int) (r1.nextDouble() * 26);
_26Num[1] = 1;
} while (!(number != 0 && number != _26Num[1]
&& number != _26Num[2] && number != _26Num[3]
&& number != _26Num[4] && number != _26Num[5]));
_26Num[i] = number;
}
// defines the buttons
View but1 = findViewById(R.id.let1);
View but2 = findViewById(R.id.let2);
View but3 = findViewById(R.id.let3);
View but4 = findViewById(R.id.let4);
View but5 = findViewById(R.id.let5);
but1.setOnClickListener(this);
but2.setOnClickListener(this);
but3.setOnClickListener(this);
but4.setOnClickListener(this);
but5.setOnClickListener(this);
// set the random content view
int random = (int) Math.ceil(Math.random() * 5);
if (random == 1) {
setContentView(R.layout.letter1a);
} else if (random == 2) {
setContentView(R.layout.letter1a);
} else if (random == 3) {
setContentView(R.layout.letter1a);
} else if (random == 4) {
setContentView(R.layout.letter1a);
} else if (random == 5) {
setContentView(R.layout.letter1a);
}
// here is were i need to set up the buttons
if (_26Num[1] == 1) {
let1.setBackgroundResource(R.drawable.let_a);
} else if (_26Num[1] == 2) {
setContentView(R.layout.letter1a);
}
}
public void onClick(View v) {
if (mp != null)
mp.release();
switch (v.getId()) {
case R.id.let1:
mp = MediaPlayer.create(this, R.raw.correct);
{
new AlertDialog.Builder(this)
.setTitle("Y A Y!!!! Y O U R R I G H T")
.setMessage(
"Thats the letter 'A' You Chose Correct")
.setNeutralButton("Done", null).show();
startActivity(new Intent("com.alphafree.LETTERB"));
}
break;
}
mp.seekTo(0);
mp.start();
}
}
import java.util.Random;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.Intent;
导入android.media.MediaPlayer;
导入android.os.Bundle;
导入android.view.view;
导入android.view.view.OnClickListener;
公共类letterA扩展活动实现OnClickListener{
/**在首次创建活动时调用*/
私人媒体播放器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
int[]_26Num=新int[6];
int i,数字;
Random r1=新的Random();//随机生成器
对于(i=1;i<26Num.length;i++){//选择6个随机数
做{
number=(int)(r1.nextDouble()*26);
_26Num[1]=1;
}而(!(number!=0&&number!=\u 26Num[1]
&&编号!=\u 26Num[2]&&number!=\u 26Num[3]
&&数字!=_26Num[4]&&number!=_26Num[5]);
_26Num[i]=个数;
}
//定义按钮
视图1=findViewById(R.id.let1);
视图but2=findViewById(R.id.let2);
视图but3=findViewById(R.id.let3);
视图but4=findViewById(R.id.let4);
视图but5=findViewById(R.id.let5);
但是1.setOnClickListener(这个);
但是2.setOnClickListener(这个);
但是3.setOnClickListener(这个);
但是4.setOnClickListener(这个);
但是5.setOnClickListener(这个);
//设置随机内容视图
int random=(int)Math.ceil(Math.random()*5);
如果(随机==1){
setContentView(R.layout.letter1a);
}else if(随机==2){
setContentView(R.layout.letter1a);
}否则如果(随机==3){
setContentView(R.layout.letter1a);
}else if(随机==4){
setContentView(R.layout.letter1a);
}否则如果(随机==5){
setContentView(R.layout.letter1a);
}
//这是我需要设置按钮的地方
如果(_26Num[1]==1){
let1.挫折资源(R.drawable.let_a);
}else if(_26Num[1]==2){
setContentView(R.layout.letter1a);
}
}
公共void onClick(视图v){
如果(mp!=null)
mp.release();
开关(v.getId()){
案例R.id.let1:
mp=MediaPlayer.create(这个,R.raw.correct);
{
新建AlertDialog.Builder(此)
.setTitle(“是的!!!!是的)
.setMessage(
“这是您选择的字母‘A’(正确”)
.setNeutralButton(“完成”,null).show();
startActivity(新意图(“com.alphafree.LETTERB”);
}
打破
}
希克托议员(0);
mp.start();
}
}
除了每次设置内容视图外,您是否可以一次添加所有内容,并保持它们的可见性为“消失”。您想要显示的任何按钮都只是使其可见性可见。如果要将“上一个”更改为“已消失”,并使新的可见。除了每次添加setContentView之外,是否可以一次添加所有内容,并将其可见性保持为“已消失”。您想要显示的任何按钮都只是使其可见性可见。如果要将上一个更改为“已删除”,并使新的可见。您可以这样做:
private static final int[] num2DrawableMap = new int[] {
R.drawable.letterA,
R.drawable.letterB,
// etc
};
private static final int[] num2LayoutMap = new int[] {
R.layout.layoutA,
R.layout.layoutB,
// etc
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int[] _26Num = new int[6];
int i, number;
Random r1 = new Random(); // Random generator
for (i = 1; i < _26Num.length; i++) { // Pick 6 Random Numbers
do {
// don't you like r1.nextInt(26) ?
number = (int) (r1.nextDouble() * 26);
// always 1? why in that loop?
_26Num[1] = 1;
} while (!(number != 0 && number != _26Num[1]
&& number != _26Num[2] && number != _26Num[3]
&& number != _26Num[4] && number != _26Num[5]));
_26Num[i] = number;
}
// set the random content view
int random = r1.nextInt(num2LayoutMap.size);
setContentView(num2LayoutMap[random]);
// find the buttons
View[] buts = new View[5];
buts[0] = findViewById(R.id.let1);
buts[1] = findViewById(R.id.let2);
buts[2] = findViewById(R.id.let3);
buts[3] = findViewById(R.id.let4);
buts[4] = findViewById(R.id.let5);
for (View but : buts) {
but.setOnClickListener(this);
int drawableId = num2DrawableMap[_26Num[i]];
but.setBackgroundResource(drawableId);
}
}
private static final int[]num2DrawableMap=new int[]{
R.drawable.letterA,
R.drawable.letterB,
//等
};
私有静态最终int[]num2LayoutMap=newint[]{
R.layout.layoutA,
布局,布局,
//等
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
int[]_26Num=新int[6];
int i,数字;
Random r1=新的Random();//随机生成器
对于(i=1;i<26Num.length;i++){//选择6个随机数
做{
//你不喜欢r1.nextInt(26)吗?
number=(int)(r1.nextDouble()*26);
//总是1?为什么在那个循环中?
_26Num[1]=1;
}而(!(number!=0&&number!=\u 26Num[1]
&&编号!=\u 26Num[2]&&number!=\u 26Num[3]
&&数字!=_26Num[4]&&number!=_26Num[5]);
_26Num[i]=个数;
}
//设置随机内容视图
int random=r1.nextInt(num2LayoutMap.size);
setContentView(num2LayoutMap[random]);
//找到按钮
视图[]但是=新视图[5];
但是[0]=findviewbyd(R.id.let1);
但是[1]=findviewbyd(R.id.let2);
但是[2]=findviewbyd(R.id.let3);
但是[3]=findviewbyd(R.id.let4);
但是[4]=findviewbyd(R.id.let5);
对于(视图但:但是){
但是.setOnClickListener(这个);
int drawableId=num2DrawableMap[_26Num[i]];
但是.setBackgroundResource(drawableId);
}
}
但是:按钮必须位于每个layout.xml文件中,并且它们必须具有相同的id。否则您将找不到它们。您还需要
setContentView()
才能使用findViewById()
您可以这样做:
private static final int[] num2DrawableMap = new int[] {
R.drawable.letterA,
R.drawable.letterB,
// etc
};
private static final int[] num2LayoutMap = new int[] {
R.layout.layoutA,
R.layout.layoutB,
// etc
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int[] _26Num = new int[6];
int i, number;
Random r1 = new Random(); // Random generator
for (i = 1; i < _26Num.length; i++) { // Pick 6 Random Numbers
do {
// don't you like r1.nextInt(26) ?
number = (int) (r1.nextDouble() * 26);
// always 1? why in that loop?
_26Num[1] = 1;
} while (!(number != 0 && number != _26Num[1]
&& number != _26Num[2] && number != _26Num[3]
&& number != _26Num[4] && number != _26Num[5]));
_26Num[i] = number;
}
// set the random content view
int random = r1.nextInt(num2LayoutMap.size);
setContentView(num2LayoutMap[random]);
// find the buttons
View[] buts = new View[5];
buts[0] = findViewById(R.id.let1);
buts[1] = findViewById(R.id.let2);
buts[2] = findViewById(R.id.let3);
buts[3] = findViewById(R.id.let4);
buts[4] = findViewById(R.id.let5);
for (View but : buts) {
but.setOnClickListener(this);
int drawableId = num2DrawableMap[_26Num[i]];
but.setBackgroundResource(drawableId);
}
}
private static final int[]num2DrawableMap=new int[]{
R.drawable.letterA,
R.drawable.letterB,
//等
};
私有静态最终int[]num2LayoutMap=newint[]{
R.layout.layoutA,
布局,布局,
//等
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
int[]26N