不能用java随机设置新按钮

不能用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

我试图让我的按钮改变为一个不同的图片和一套dif的法律 这是一个字母表应用程序,我目前正在工作,它在市场上。。。。我想让它随机改变图片,然后在整个程序中跟随alphebet,但我不知道如何让按钮随机,所以这里是我使用的基本代码

包com.alphafree

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