スレッドの外側(メインスレッド上)にあるテキストビューを設定する前に、すでに設定されている整数のグローバル変数が最初に必要になります。開始する新しいスレッドは単純に開始され、コードの次の行に移動するため、myInt はまだ設定されていないため、事前に設定する必要があります。
次に、少なくとも最初は、メイン スレッドの textview に所定のグローバル整数値を使用します。開始したスレッド内から変更したい場合は、スレッドから整数を渡し、グローバル変数をその値に設定する setIntValue() のようなメソッドをクラスに作成します。必要に応じて、後でコード例を更新できます。
更新: コード例
public class MainActivity extends Activity {
//your global int
int myInt
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
new Thread(new Runnable(){
public void run() {
int myRunnableInt = 1;
// Code below works fine and shows me myInt
TextView textView = (TextView) findViewById(R.id.text_view);
textView.setText(String.valueOf(myRunnableInt));
//say you modified myRunnableInt and want the global int to reflect that...
setMyInt(myRunnableInt);
}
}).start();
//go ahead and initialize the global one here because you can't directly access your
myRunnableInt
myInt = 1;
TextView textView = (TextView) findViewById(R.id.text_view);
textView.setText(String.valueOf(myInt)); //now you will have a value here to use
//method to set the global int value
private void setMyInt(int value){
myInt = value;
//you could also reset the textview here with the new value if you'd like
TextView textView = (TextView) findViewById(R.id.text_view);
textView.setText(String.valueOf(myInt));
}
}
注:グローバルで操作可能な変数を使用するのではなく、テキストビューのみをリセットできるようにしたい場合は、グローバル変数を保存するのではなく、新しい整数を渡してテキストビューを設定するようにメソッドを変更することをお勧めします。これ:
private void setTextView(int newInt){
TextView textView = (TextView) findViewById(R.id.text_view);
textView.setText(String.valueOf(newInt));
}
上記を行う場合は、スレッド内からメソッドを呼び出すときに、次のように UI スレッドで呼び出すようにしてください。