TextView未更新

时间:2015-08-09 12:58:01

标签: android android-edittext textview

我正在尝试生成随机数。要这样做, 我从编辑文本中获取文本并将其传递给Random类的nextInt。但我有一个问题。我的textView没有改变。 这是代码:

    package random.vivek.com.random;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.EditText;
import android.widget.TextView;

/**
 * Created by Shiva on 09-08-2015.
 */
public class Random extends AppCompatActivity  {

    int number , i ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        java.util.Random genertor = new java.util.Random();
        EditText editText = (EditText) findViewById(R.id.random);
        TextView textView = (TextView) findViewById(R.id.text);


        String s = editText.getText().toString();
        try {
            i = Integer.parseInt(s);
            for (int roll = 0; roll < 20; roll++) {
                number = genertor.nextInt(i);
            }


        } catch (NumberFormatException e) {
            e.printStackTrace();

    }






        textView.setText(number + "");
    }
}

5 个答案:

答案 0 :(得分:3)

尝试:

try {
            i = Integer.parseInt(s);
            for (int roll = 0; roll < 20; roll++) {
                number = genertor.nextInt(i);
                textView.setText(number);
            }


        } catch (NumberFormatException e) {
            e.printStackTrace();

答案 1 :(得分:2)

onCreate方法:

首先,您要在onCreate方法中编写此内容。 onCreate是大多数初始化内容的方法。

因此,在创建视图时,edittext中没有任何内容,因此您在文本视图中什么也得不到。相反,您应该通过单击某个按钮或编辑文本中的文本更改来执行此操作,以使其更具动态性。

响应编辑文本更改:

要对edittext文本更改执行某些操作,请使用文本观察器,如下所示:

editText.addTextChangedListener(new TextWatcher(){
    public void afterTextChanged(Editable s) {
        String s = editText.getText().toString();
        try {
            i = Integer.parseInt(s);
            for (int roll = 0; roll < 20; roll++) {
              number = genertor.nextInt(i);
            }
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after){}
    public void onTextChanged(CharSequence s, int start, int before, int count){}
}); 

答案 2 :(得分:2)

    String s = editText.getText().toString();
    try {
        i = Integer.parseInt(s);
        for (int roll = 0; roll < 20; roll++) {
            number = genertor.nextInt(i);
            textView.setText(String.ValueOf()number);
            // But this will also keep continuing through the loop and change the text quickly.
        }

如果要附加值:

String s = editText.getText().toString();
    try {
        i = Integer.parseInt(s);
        for (int roll = 0; roll < 20; roll++) {
            number = genertor.nextInt(i);
            textView.append(String.ValueOf()number + " ");

另外,你的textView.setText(数字+“”); +“”什么也没做。

如果您希望在更改textView文本之间有时间延迟,则需要更改算法。

答案 3 :(得分:2)

您需要在代码中使用textView.setText(Integer.toString(number))来设置textview

答案 4 :(得分:2)

您将所有代码都放在onCreate方法中,这是错误的。活动开始时调用onCreate方法。您应该在应用程序中添加一个按钮或其他内容,以便在用户按下按钮时生成随机数。我认为你有能力这样做,所以我不会告诉你这里。

在按钮的on click侦听器中,编写上面的代码:

public void buttonOnClick(查看视图){     java.util.Random genertor = new java.util.Random();     EditText editText =(EditText)findViewById(R.id.random);     TextView textView =(TextView)findViewById(R.id.text);

String s = editText.getText().toString();
try {
    i = Integer.parseInt(s);
    for (int roll = 0; roll < 20; roll++) {
       number = genertor.nextInt(i);
    }
    textView.setText (Integer.toString(number));

} catch (NumberFormatException e) {
   e.printStackTrace();

}