0
テキストファイルを読み込んで最初の要素が1かどうかをチェックし、textview(TextViewDisk1)に表示して2のようにチェックするプログラムを作成しましたそれはうまく機能しましたが、最初の行だけでした。プログラムが次の行を読み取った後、アプリケーションは停止します。テキストファイルを読み込んで複数のテキストビューに一度に追加しないでください
logcat
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views
。
この問題を解決するにはどうすればよいですか?
コード
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Read text file and show number on the textview
new Thread(new Runnable() {
@Override
public void run() {
final TextView TextDisk1 = (TextView) findViewById(R.id.TextDisk1);
final TextView TextDisk2 = (TextView) findViewById(R.id.TextDisk2);
final TextView TextDisk3 = (TextView) findViewById(R.id.TextDisk3);
final TextView TextDisk4 = (TextView) findViewById(R.id.TextDisk4);
final TextView TextDisk5 = (TextView) findViewById(R.id.TextDisk5);
try {
InputStream stream = getAssets().open("Messwerte.txt");
InputStreamReader reader = new InputStreamReader(stream);
BufferedReader buffer = new BufferedReader(reader);
String lines;
for (int i = 0; i < 2400; i++) {
lines = buffer.readLine();
String[] line = lines.split("\t");
String first = line[0];
String second = line[1];
String third = line[2];
TextDisk3.setText(third);
if(first.equals("1"))
{
TextDisk1.setText(second);
}
else if(first.equals("2"))
{
TextDisk2.setText(second);
}
else if(first.equals("4"))
{
TextDisk4.setText(second);
}
else if(first.equals("5"))
{
TextDisk5.setText(second);
}
i++;
Thread.sleep(6000);
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();