如果语句无法正常使用xml

时间:2018-04-16 17:32:01

标签: android xml

我一直坚持这个,我没有找到类似的案例,这是我的问题。

我正在尝试根据Random方法的结果显示图像。如果Random的int为3(例如),则显示的图像必须为数字3。

问题在于我无法将Random的结果与其正确的图像相匹配。

public class Second extends AppCompatActivity {
ImageView cIma01;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    cIma01 = findViewById(R.id.imageView);

    generAle();

    String stri =  String.valueOf(generAle());
    Log.e(stri, "Number");

    if (generAle() == 0) {
        cIma01.setImageResource(R.drawable.num0);
    } else if (generAle() == 1) {
        cIma01.setImageResource(R.drawable.num1);
    } else if (generAle() == 2) {
        cIma01.setImageResource(R.drawable.num2);
    } else if (generAle() == 3) {
        cIma01.setImageResource(R.drawable.num3);
    } else if (generAle() == 4) {
        cIma01.setImageResource(R.drawable.num4);
    }
}

private int generAle () {
    Random rand = new Random();
    return rand.nextInt(5);
}

LogCat说Random方法的结果就是这个(我连续尝试了10次只是为了测试):

0, 1, 3, 4, 1, 3, 0, 4, 3, 1

但显示的图像是下一个:

0, 4, X, 1, 3, 0, 3, 2, 3, 1

甚至没有关闭! X是因为在这种情况下它根本没有显示任何图像(omg!)

我已经尝试了一些替代方案,比如使用switch case,但它是相同的

1 个答案:

答案 0 :(得分:0)

您的问题是,您在第8,9行以及if-else语句中多次调用generAle ()

这是另一种方法:

public class Second extends AppCompatActivity {
ImageView cIma01;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    cIma01 = findViewById(R.id.imageView);

    String stri =  String.valueOf(generAle());
    Log.e(stri, "Number");

    if (stri.equals("0")) {
        cIma01.setImageResource(R.drawable.num0);
    } else if (stri.equals("1")) {
        cIma01.setImageResource(R.drawable.num1);
    } else if (stri.equals("2")) {
        cIma01.setImageResource(R.drawable.num2);
    } else if (stri.equals("3")) {
        cIma01.setImageResource(R.drawable.num3);
    } else if (stri.equals("4")) {
        cIma01.setImageResource(R.drawable.num4);
    }
}

private int generAle () {
    Random rand = new Random();
    return rand.nextInt(5);
}

您可能还想查看the switch statement