相対レイアウトで最初に緑を設定し、白を設定した後、相対レイアウトの背景色を変更しようとしていますが、問題のスレッドが2回実行され、強制終了エラーが発生し、多くの方法を修正しようとしましたが、機能しません。これが私のコードです:
isThreadRunning = true;
relative=(RelativeLayout) findViewById(R.id.layout);
Runnable runnable = new Runnable() {
public void run() {
int i=0;
while(isThreadRunning) {
if(i==0)
{
relative.setBackgroundColor(Color.GREEN);
i=1;
}
else
{
relative.setBackgroundColor(Color.BLACK);
i=0;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
new Thread(runnable).start();
そして私は以下のようなlogcatでエラーが発生しています:
07-10 17:48:42.752: W/dalvikvm(2060): threadid=9: thread exiting with uncaught exception (group=0x40015560)
07-10 17:48:42.756: E/AndroidRuntime(2060): FATAL EXCEPTION: Thread-10
07-10 17:48:42.756: E/AndroidRuntime(2060): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
07-10 17:48:42.756: E/AndroidRuntime(2060): at android.view.ViewRoot.checkThread(ViewRoot.java:2932)
07-10 17:48:42.756: E/AndroidRuntime(2060): at android.view.ViewRoot.invalidateChild(ViewRoot.java:642)
07-10 17:48:42.756: E/AndroidRuntime(2060): at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:668)
07-10 17:48:42.756: E/AndroidRuntime(2060): at android.view.ViewGroup.invalidateChild(ViewGroup.java:2511)
07-10 17:48:42.756: E/AndroidRuntime(2060): at android.view.View.invalidate(View.java:5279)
07-10 17:48:42.756: E/AndroidRuntime(2060): at android.view.View.setBackgroundDrawable(View.java:7626)
07-10 17:48:42.756: E/AndroidRuntime(2060): at android.view.View.setBackgroundColor(View.java:7516)
07-10 17:48:42.756: E/AndroidRuntime(2060): at com.example.screen_blinker.Home_activity$1.run(Home_activity.java:44)
07-10 17:48:42.756: E/AndroidRuntime(2060): at java.lang.Thread.run(Thread.java:1019)
私のコードの何が問題になっていて、この問題を修正する方法は?
前もって感謝します!