Only the original thread that created a view hierarchy can touch its views. On android
android, error-handling, java
Solution
Change your `startingUp()` to this.
private void startingUp() {
Thread timer = new Thread() { //new thread
public void run() {
Boolean b = true;
try {
do {
counter++;
title();
sleep(1000);
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
title.clearComposingText();
}
});
}
while (b == true);
} catch (IntruptedException e) {
e.printStackTrace();
}
finally {
}
};
};
timer.start();
}
You can't modify views from non-UI thread.
Problem
I'm only a beginner so please forgive me for asking possibly a stupid question I don't understand the meaning of Only the original thread that created a view hierarchy can touch its views. Please can someone teach me why this error is occurring and how to solve this problem. ThankYou This is my class ``` public class MainActivity extends Activity { TextView title; Random random = new Random(); int counter = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.startup); startingUp(); } private void startingUp() { Thread timer = new Thread() { //new thread public void run() { Boolean b = true; try { do { counter++; title(); sleep(1000); title.clearComposingText(); } while (b == true); } catch (IntruptedException e) { e.printStackTrace(); } finally { } }; }; timer.start(); } public void title() { title = (TextView) findViewById(R.id.tvTitle); switch (random.nextInt(2)) { case 0: title.setGravity(Gravity.RIGHT); break; case 1: title.setGravity(Gravity.CENTER); break; case 2: title.setGravity(Gravity.LEFT); break; } title.setTextColor(Color.rgb(random.nextInt(250), random.nextInt(250), random.nextInt(250))); title.setTextSize(random.nextInt(55) + 10); } } ``` And this is my LogCat ``` 02-20 10:53:19.293: I/Adreno200-EGLSUB(5816): <ConfigWindowMatch:2078>: Format RGBA_8888. 02-20 10:53:19.303: D/memalloc(5816): /dev/pmem: Mapped buffer base:0x5c914000 size:14135296 offset:10366976 fd:64 02-20 10:53:19.303: E/(5816): Can't open file for reading 02-20 10:53:19.303: E/(5816): Can't open file for reading 02-20 10:53:19.303: D/OpenGLRenderer(5816): Enabling debug mode 0 02-20 10:53:19.373: D/memalloc(5816): /dev/pmem: Mapped buffer base:0x5db58000 size:3768320 offset:0 fd:67 02-20 10:53:20.143: W/dalvikvm(5816): threadid=11: thread exiting with uncaught exception (group=0x40abc210) 02-20 10:53:20.143: E/AndroidRuntime(5816): FATAL EXCEPTION: Thread-3102 02-20 10:53:20.143: E/AndroidRuntime(5816): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 02-20 10:53:20.143: E/AndroidRuntime(5816): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4039) 02-20 10:53:20.143: E/AndroidRuntime(5816): at android.view.ViewRootImpl.invalidateChild(ViewRootImpl.java:722) 02-20 10:53:20.143: E/AndroidRuntime(5816): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:771) 02-20 10:53:20.143: E/AndroidRuntime(5816): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4112) 02-20 10:53:20.143: E/AndroidRuntime(5816): at android.view.View.invalidate(View.java:8639) 02-20 10:53:20.143: E/AndroidRuntime(5816): at android.view.View.invalidate(View.java:8590) 02-20 10:53:20.143: E/AndroidRuntime(5816): at android.widget.TextView.setGravity(TextView.java:2538) 02-20 10:53:20.143: E/AndroidRuntime(5816): at com.example.saikoro.MainActivity.title(MainActivity.java:58) 02-20 10:53:20.143: E/AndroidRuntime(5816): at com.example.saikoro.MainActivity$1.run(MainActivity.java:36) ```