Android应用程序在生成随机数时停止



我似乎找不到这个答案。我已经试过了所有我能找到的代码。我有一个应用程序,需要使2个随机数,其中用户将加在一起。这是一个数学练习应用。

这是ui的xml代码。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:id="@+id/num1"
    android:layout_marginRight="50dp"
    android:layout_marginEnd="50dp"
    android:textSize="72sp"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/oper"
    android:layout_toStartOf="@+id/oper" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:id="@+id/num2"
    android:textSize="72sp"
    android:layout_alignTop="@+id/oper"
    android:layout_toRightOf="@+id/oper"
    android:layout_toEndOf="@+id/oper"
    android:layout_marginLeft="50dp"
    android:layout_marginStart="50dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="+"
    android:id="@+id/oper"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:textSize="72sp" />

第一个textview和第三个textview是由应用程序生成的随机数。第二个textview只是一个加法符号。

这是我的java代码(记住这不是一个mainActivity)

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_play_addition);
    updateNums();
}
public void updateNums(){
    final Random random = new Random();
    final int randval = random.nextInt(10 - 1 + 1) + 1;
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            final TextView num1 = (TextView) findViewById(R.id.num1);
            num1.setText(randval);
            final TextView num2 = (TextView) findViewById(R.id.num2);
            num2.setText(randval);
        }});
}

您必须将随机值转换为字符串-否则它将被视为字符串-res

public void updateNums(){
    final Random random = new Random();
    final int randval = random.nextInt(10 - 1 + 1) + 1;
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            final TextView num1 = (TextView) findViewById(R.id.num1);
            num1.setText(String.valueOf(randval));
            final TextView num2 = (TextView) findViewById(R.id.num2);
            num2.setText(String.valueOf(randval));
        }});
}

相关内容

最新更新