2015-08-09 96 views
1

我正在尝试生成随机数。为此, 我从编辑文本中获取文本并将其传递给Random类的nextInt。但我有一个问题。我的textView没有改变。 这里它的代码: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 + ""); 
    } 
} 

回答

2

你把你所有的代码在onCreate方法,这是错误的使用textView.setText(Integer.toString(号))来设置你的TextView。活动开始时调用onCreate方法。您应该为您的应用添加一个按钮或某些东西,以便当用户按下按钮时,会生成一个随机数。我认为你有能力做到这一点,所以我不会在这里展示你。

在按钮的点击监听器,上面写代码:

公共无效buttonOnClick(查看视图){ java.util.Random的genertor =新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(); 

} 
+0

已修复。谢谢。 :) –

+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(); 
+0

如何将这项工作?每次设置文本时调用循环:) –

+0

你想做什么?告诉我你的目的。 –

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
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(number +“”); +“”什么都不做。

你需要,如果你想改变你的TextView的文本之间的时间延迟来改变你的算法。

2

你需要在你的代码