0

下面的问题让我很头疼。我创建了一个 TextView,它在单击按钮(askButton)后显示一个随机数组。第二个按钮(rstButton)应该充当重置按钮,从文本中清除所有字段。为了实现这一点,我使用了该setText("")方法。它成功清除了所有字段。

我的问题是,在清除所述 TextView 并单击 Button(askButton) 之后,TextView 内容不再是随机的,并一遍又一遍地显示相同的数组。我整天都在各种网站上寻找解决方案,但没有成功。

 String ansArray[] = { "yes","no", "Surely","Never"}; 
    final Random random = new Random();                                         
    final int select = random.nextInt(ansArray.length);
    final TextView ansText = (TextView) findViewById(R.id.textView1); 
    Button buttonAsk = (Button) findViewById(R.id.button1); 
    buttonAsk.setOnClickListener(new Button.OnClickListener() {
        public void onClick(View v) {

        ansText.setText(ansArray[select]);   

我认为“final”修饰符导致无法更改数组,但不将我的数组声明为 final 会给我一个错误并要求使用 final 修饰符。(我认为这就是问题所在)

代码的第二部分包括重置按钮:

final EditText questionText = (EditText) findViewById(R.id.editText1);
    ImageButton btnReset = (ImageButton) findViewById(R.id.imageButton1);
    btnReset.setOnClickListener(new ImageButton.OnClickListener(){
        public void onClick(View v){
           questionText.setText("");
            ansText.setText("");

    }
});

那么我的问题在于最终修饰符还是我做错了什么?我很感激任何帮助。提前致谢!

4

2 回答 2

0

尝试删除“final”修饰符:

final Random random = new Random();                                         
final int select = random.nextInt(ansArray.length);

每次运行应用程序时,这些代码将始终生成一个值。

祝你好运^^

于 2013-05-30T00:30:46.513 回答
0

您只生成此号码一次。摆脱 onClick 侦听器外部的 int select 。

final TextView ansText = (TextView) findViewById(R.id.textView1); 
Button buttonAsk = (Button) findViewById(R.id.button1); 
buttonAsk.setOnClickListener(new Button.OnClickListener() {
    public void onClick(View v) {
        int select = random.nextInt(ansArray.length);
        ansText.setText(ansArray[select]); 

你之前所做的只是得到一个随机数一次。在 onClick 中生成随机数后,每次新点击都会获得一个新的随机数。

于 2013-05-30T00:50:40.970 回答