Android:点击按钮时 - >随机字符串

时间:2013-12-15 14:36:00

标签: java android string random

我有一个按钮和一些字符串。

当我单击按钮时,如何将字符串随机更改为另一个字符串? 我不确定我应该在这里复制哪部分代码...

按钮:

 <Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/txt_example1"
      android:layout_centerHorizontal="true"
      android:background="@drawable/button_newfact"
      android:minHeight="38dip"
      android:minWidth="74dp"
      android:onClick="OnButtonClickChangeTextOfTextView" />

这是我使用YouTube教程制作的MainActivity.java中的内容。但它只会更改为新文本,而不会更改为其他字符串。而且它不是随机的。

 public void OnButtonClickChangeTextOfTextView(View view)
    {
        TextView textView = (TextView)findViewById(R.id.txt_example1);
        textView.setText("");
    }

我希望你能帮助我。祝大家第三次来临。 :)

2 个答案:

答案 0 :(得分:2)

strings.xml中有5个字符串。他们每个人都有一个id。您应该创建这些ID的数组(例如:string1string2等),如下所示:

private int[] stringIds = {R.string.string1, R.string.string2, R.string.string3, R.string.string4, R.string.string5};

然后使用以下代码:

private Random rand = new Random();
private int[] stringIds = {R.string.string1, R.string.string2, R.string.string3, R.string.string4, R.string.string5};
public void OnButtonClickChangeTextOfTextView(View view)
{
    TextView textView = (TextView)findViewById(R.id.txt_example1);
    int randomNumber = rand.nextInt(5);
    textView.setText(getResources().getString(stringIds[randomNumber]));
}

答案 1 :(得分:1)

假设您在xml中定义了一个按钮,如下所示:

<Button
  android:id="@+id/button1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:onClick="randomNumber" />

如果在这种情况下你有一个在xml文件中定义的字符串,你会做一个参考 以这种方式(在这个例子中,他们称之为R.string.name1等......)

 private int[] ids = {R.string.name1 , R.string.name2 , R.string.name3};

 public void randomNumber(View view){  

 //Now let's say you want a random number between 1 and 10.

    int number = new Random().nextInt(3);      

    String randomString = getResource().getString(ids[number]);

    //Then you set the text, let's say to a textView

    textView.setText(randomString);

  }