2015-08-09 95 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

你需要在你的代碼