Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.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 安卓:链接到特定按钮的随机图像?_Java_Android_Image_Button_Random - Fatal编程技术网

Java 安卓:链接到特定按钮的随机图像?

Java 安卓:链接到特定按钮的随机图像?,java,android,image,button,random,Java,Android,Image,Button,Random,大家好,我现在正在玩android/Java代码。我正在使用的小程序随机选择并显示一幅图像。这很好用,但现在我想做的是将某些图像链接到一个按钮 例如,如果从可绘制屏幕上显示猫的图片,则按下猫按钮将拾取下一个随机图像,如果是狗的图像,则狗按钮将是唯一正确的输入。如果按下错误的按钮,程序将通过屏幕进入游戏 目前,我已经设置了这样的代码启动一个随机图像,如果显示和按下一个按钮,无论图像是什么,它将加载下一个。以下是我迄今为止使用的部分代码: image = (ImageView) findVi

大家好,我现在正在玩android/Java代码。我正在使用的小程序随机选择并显示一幅图像。这很好用,但现在我想做的是将某些图像链接到一个按钮

例如,如果从可绘制屏幕上显示猫的图片,则按下猫按钮将拾取下一个随机图像,如果是狗的图像,则狗按钮将是唯一正确的输入。如果按下错误的按钮,程序将通过屏幕进入游戏

目前,我已经设置了这样的代码启动一个随机图像,如果显示和按下一个按钮,无论图像是什么,它将加载下一个。以下是我迄今为止使用的部分代码:

    image = (ImageView) findViewById(R.id.Hold_Image);



        Random rand = new Random();
        int rndN = rand.nextInt(16)+ 1 ; 
        String imgName = "img" + rndN;
        int id = getResources().getIdentifier(imgName, "drawable", getPackageName());  
        image.setImageResource(id); //creating the random selector
        cat = (Button) findViewById(R.id.Cat);
        dog = (Button) findViewById(R.id.Dog);//button setup
                setButtonOnClickListeners();
    }


    private void setButtonOnClickListeners(){//button code

        cat.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View arg0) {
            if(???){//what should call the image number?    
                Random rand = new Random();
                int rndN = rand.nextInt(16)+ 1 ;  
                String imgName = "img" + rndN;
                int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); }//next random image upon correct button 
                Word.setImageResource(id);
                else{
//game over screen code(yet to write)
} 
            }
        }); 
} 更新1:这是我尝试使用Vlads方法的代码。我的问题是按钮没有任何作用,随机图像也不起作用(每次只显示一个相同的图像)


首先,给不同类型的图片起一个不同的名字,就像所有的狗图片dog1,dog2。。。和所有猫的图片cat3,cat4确保数字保持不变。然后将imgName定义为类变量并添加此方法:将“String imgName=“img”+rndN;”行替换为:

private void nextImage() {
    Random rand = new Random();
    int rndN = rand.nextInt(16)+ 1 ; 
    String imgName = "dog" + rndN;
    int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
    if (id == 0) {
        imgName = "cat" + rndN;
        id = getResources().getIdentifier(imgName, "drawable", getPackageName());
    }
    image.setImageResource(id);
}
现在将onClick方法替换为以下方法:

@Override
public void onClick(View v) {
    if(imgName.startsWith("dog") && v.getId() == R.id.Dog ||
            imgName.startsWith("cat") && v.getId() == R.id.Cat) {    
        nextImage();
    } else {
        //game over screen code(yet to write)
    } 
}

显然,还可以用nextImage()替换“image=…”和“cat=…”之间的部分。

@Phil3992我修正了我的答案。代码现在应该可以按预期工作了。@Phil3992我马上看到一件事:您应该只调用setButtonConClickListeners()一次:在onCreate()中。正如我在回答的最后所说的:在dog=(按钮)findViewById(R.id.theDog)之后,替换onCreate中的所有内容;使用nextImage();
@Override
public void onClick(View v) {
    if(imgName.startsWith("dog") && v.getId() == R.id.Dog ||
            imgName.startsWith("cat") && v.getId() == R.id.Cat) {    
        nextImage();
    } else {
        //game over screen code(yet to write)
    } 
}