Android Junittesting失败,只有“创build视图层次结构的原始线程可以触及其视图”。

我对Android非常陌生,正在使用Robotium编写一些基本的Androidtesting,而且这种testing失败了

"android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views." 

以下是基本的testing用例描述:

testing用例:-

 public void testSearch() { Activity a = getActivity(); SearchItemActivity search = new SearchItemActivity(solo); search.searchText("ipod", a); } SearchItemActivity.searchText(String) is defined as public void searchText(final String search, Activity act) { Button v = (Button) act .findViewById(com.test.mobile.R.id.text_search_field); ((Button) v).setText(""); ((Button) v).setText(search); solo.sendKey(Solo.ENTER); solo.waitForActivity("FoundItemdDetailActivity"); solo.assertCurrentActivity("Expected FoundItemDetail activity","FoundItemdDetailActivity"); } 

任何build议如何我可以修改我的代码将赏识

Solutions Collecting From Web of "Android Junittesting失败,只有“创build视图层次结构的原始线程可以触及其视图”。"

 @UiThreadTest public void yourMethod() { 

@UiThreadTest批注告诉Android构build这个方法,以便它在UI线程上运行。 这允许该方法更改被测应用程序中的微调控件的状态。 这个@UiThreadTest的使用表明,如果有必要的话,你可以在UI线程上运行整个方法。

http://developer.android.com/tools/testing/activity_test.html

我想你正在尝试从非UI线程更新UI。 所以为此,你需要把你的代码放入runOnUiThread()

 ActivityName.this.runOnUiThread(new Runnable() { public void run() { // your code to update the UI } });