View components in Android are NOT thread-safe. to update a view, they must be updated in the main thread. Update operations cannot be performed in subthreads. Therefore, the message mechanism can be used for updates.
Declare a handler to process the message first.
private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { setContentView(child); } };
Then, send a message to handler in the method of the event triggered in the view to trigger the update view.
b2 = (Button) findViewById(R.id.return_button); b2.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { setWebView(); } });
private void setWebView() { Message msg = new Message(); msg.what = CHANGE_WEB; handler.sendMessage(msg); }
In this way, you can operate the main view in other threads.
"Only the original thread that created a view hierarchy can touch its views." SOLUTION