アクティビティでTextViewを更新しようとしていますが、ビューを更新するメソッドは主なアクティビティ(通常の状況)ですが、このメソッドを呼び出すメソッドは別のクラス糸)。アンドロイドビューは別のクラスと別のスレッドから更新されていません
これは、ビューを更新する方法であるが、この方法では、主な活動であり、 は(すべてのログが正しく印刷されていることに注意してください、正しい順序で):それがどこにある
public void getDataFromFiles() {
String new_text = JsonReader.readTextData(dataName,activityName, this);
Log.i("Loading", "loaded text " + new_text );
if (new_text != null) {
TextView introText = (TextView) findViewById(R.id.loading_introTxt);
introText.setText(new_text);
}
}
ですLoadingThreadと呼ばれる別のクラスから呼び出され、それは参照(loadingActivity)を有する:
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i("LoadingThread", "Will update loading screen");
loadingActivity.getDataFromFiles();
}
});
もLoadingThreadクラスは
主な活動から呼び出される方法に注意してくださいLoadingThread loadingThread = LoadingThread.getInstance(this);
Thread thread = new Thread(loadingThread);
loadingThread.setActivity(this);
thread.start();
メインアクティビティはLoadingThreadを開始します。このアクティビティは、ビューを更新するはずのメインアクティビティで再び呼び出されますが、これは発生しません。もう一度やり直すと、更新情報がそこにあります。
問題がないように、UIスレッドで更新プログラムを実行しています。 introText.invalidate()を追加してみてください。 getDataFromFiles()でテキストを設定した後 – Juan
loading_introTxtの参照をアクティビティに残しておき、役立つかどうか確認できますか? –
@juanいいえ残念ながら – yoyo