Android中按钮的条件检查

时间:2012-07-19 09:46:33

标签: java android

这是一个生成随机字符串的类文件。

public class RandomGen {
    static String keys() {
        String str[] = new String[25];
        str[0] = "Press A1";
        str[1] = "Press A2";
        str[2] = "Press A3";
        str[3] = "Press A4";
        str[4] = "Press A5";
        str[5] = "Press B1";
        str[6] = "Press B2";
        str[7] = "Press B3";
        str[8] = "Press B4";
        str[9] = "Press B5";
        str[10] = "Press C1";
        str[11] = "Press C2";
        str[12] = "Press C3";
        str[13] = "Press C4";
        str[14] = "Press C5";
        str[15] = "Press D1";
        str[16] = "Press D2";
        str[17] = "Press D3";
        str[18] = "Press D4";
        str[19] = "Press D5";
        str[20] = "Press E1";
        str[21] = "Press E2";
        str[22] = "Press E3";
        str[23] = "Press E4";
        str[24] = "Press E5";

        Random randomGenerator = new Random();
        int randomInt = randomGenerator.nextInt(25);
        return str[randomInt];
    }
}

这是android活动文件。我正在从类中返回一个随机文本并在文本视图中显示。如果返回的字符串是“按A1”,则用户应仅按下Al按钮。如果他按下其他按钮,则必须在其他文本视图中显示错误消息。下次如果在该文本视图中显示“按C1”,则用户应仅按下C1按钮。如果他按下另一个按钮“错误按钮”消息必须显示。我不知道如何检查病情。请帮帮我。

    RandomGen rg = new RandomGen();
    String s;
    b[0].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            s = rg.keys();
            tv.setText(s);
            tv2.setText("A1 is pressed");
        }
    });
    b[1].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            s = rg.keys();
            tv.setText(s);
            tv2.setText("A2 is pressed");
        }
    });
    b[2].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            s = rg.keys();
            tv.setText(s);
            tv2.setText("A3 is pressed");

        }
    });
    b[3].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            s = rg.keys();
            tv.setText(s);
            tv2.setText("A4 is pressed");
        }
    });

2 个答案:

答案 0 :(得分:0)

如果您想测试这个,我建议创建一个包含两个实现的RandomGenerator接口。一个实现返回一组预定义的结果,另一个使用Random来提供答案。

这样可以在测试期间使用预定义的RandomGenerator,并在运行应用程序期间使用随机的RandomGenerator。

下面的代码演示了我上面说明的设置。在keys方法中传递IntegerGenerator并使用它:

public static String keys(IntegerGenerator generator) {
    // code to create keys str
    int randomInt = generator.nextInt(str.length);
    return str[randomInt];

}

interface IntegerGenerator {
    public int nextInt(int maximum);
}

class PredefinedIntegerGenerator implements IntegerGenerator {

    private final int[] values;
    private int index;

    public PredefinedIntegerGenerator(int[] values) {
        this.values = values;
        this.index = 0;
    }

    @Override
    public int nextInt(int maximum) {
        if (index >= values.length) {
            index = 0;
        }
        return values[index];

    }
}

class RandomIntegerGenerator implements IntegerGenerator {

    private final Random random;

    public RandomIntegerGenerator(Random random) {
        this.random = random;
    }

    @Override
    public int nextInt(int maximum) {
        return random.nextInt(maximum);
    }
}

答案 1 :(得分:0)

这里有很多代码重复。这是你应该做的,恕我直言。

创建一个静态的最终文本数组,其中包含所有按钮的文本。

创建一个Map<View, String>,其中包含与每个按钮相关联的文字(除非Android允许将某些文字与按钮相关联,在这种情况下您甚至不需要此地图)。

对于每个按钮添加相同的侦听器:

View.OnCliskListener theListener = new View.OnClickListener() {
    public void onClick(View buttonClicked) {
        String textOfTheButtonClicked = map.get(buttonClicked);
        if (!textOfTheButtonClicked.equals(theTextChosenRandomly)) {
            // do what you want here
        }
    }
};