选择的选项不从内存android清除

时间:2013-11-12 03:50:21

标签: android random spinner

我有一个小的随机数微调器,当你点击时给出一个随机数。我有两个问题。第一个是主活动加载时,它会在屏幕上显示一个随机数,而不会点击随机数旋转器。我不确定将什么设置为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();
}

1 个答案:

答案 0 :(得分: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;  }
}
  

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

我不完全确定你的意思,但你可以为每个""来电{{1}之后的position设置一个空值(onItemSelected()) }}