0

我有一个小的随机数微调器,当您单击它时会给出一个随机数。我有两个问题。第一种是当主活动加载时,它会在屏幕上显示一个随机数,而不会单击随机数微调器。我不确定将什么设置为 false 以防止它与主要活动一起打开。第二个问题是,当您从微调器中选择一个选项时,它不会清除。这意味着如果您单击选项 D6 或 D20,则在先选择另一个选项之前,您不能再次单击相同的选项。本质上,在选择随机数后,该选择不会从内存中清除。这是随机数代码

public void onItemSelected(AdapterView<?> parent, View view, int pos,
        long id) {
    Random rand = new Random();
    int roll = 0;
    boolean firstRun = false;
    // An item was selected.
    if (!firstRun)
    {
    if (spinner1.getSelectedItemPosition()==0)
    {
        roll = rand.nextInt(6)+1;
    }
    else
    {
        roll = rand.nextInt(20)+1;
    }
    }
      else
       { firstRun = false;  }

    // Put the result into a string.
    String text = "You rolled a " + roll;
    // Build a dialog box and with the result string and a single button
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(text).setCancelable(false)
            .setPositiveButton("OK", new 
  DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id)  
  {
                    // do things when the user clicks ok.
                }
            });
    AlertDialog alert = builder.create();

    // Show the dialog box.
    alert.show();
}
4

1 回答 1

1

...当主活动加载时,它会在屏幕上显示一个随机数,而不会单击随机数微调器。

这是因为在首次创建onItemSelected()时调用。Activity为避免运行此代码,只需创建一个成员变量(在方法外部声明,最好在之前声明onCreate()以提高可读性),例如boolean. 并检查一下。例如

 public void onItemSelected(AdapterView<?> parent, View view, int pos,
    long id) 
{
    if (!firstRun)  // where firstRun is the boolean variable you create 
                    // and set to true
    {
        // run your code
    }
    else
   { firstRun = false;  }
}

第二个问题是,当您从微调器中选择一个选项时,它不会清除。

我不确定你的意思是什么,但你可以""为你的第一个设置一个空值(),position然后在每次调用onItemSelected()调用之后setSelection(0)

于 2013-11-12T03:58:19.053 回答