2011-03-08 87 views
1

我想編寫一個測試,測試我的佈局中的字段與生成的業務對象之間的正確映射關係。但是,當我嘗試將值設置爲我的文本字段時,出現錯誤,說我不應該嘗試將值設置爲來自另一個線程的文本字段。所以基本上我無法將活動設置爲可以嘗試創建業務對象的狀態。將值設置爲TextField

但是如何編寫這樣的測試呢?我更喜歡如果我不必向僅支持測試的活動添加代碼,但是我可能無法避免這種情況?

在此先感謝 羅蘭

回答

2

查看對象只能從UI線程訪問。您必須嘗試從您在其他地方創建的工作線程中設置這些值。

你應該看看的AsyncTask類,看看是否能解決你的問題(它有是在UI線程像onResult,onProgress,......執行的功能)

另一種可能性是使用Activity.runOnUiThread(Runnable)函數。

這就是我可以說的所有細節。也許如果你發佈一些示例代碼,你會得到更準確的答案。

+0

我使用runOnUiThread和Thread.sleep(50)解決了該問題,以允許更新ui。 – Roland 2011-03-08 20:09:19

0

凡在你的活動是你想設置的文本字段?

如果你只是需要一個簡單的測試,你可以通過onCreate方法。下面是我的功能代碼snippit:

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    _dateView = (TextView) findViewById(R.id.ScheduleDate); 
    _dateView.setText("TODAY"); 
} 
+0

我想從我的測試中設置TextView的值,以查看我的「保存」 - 方法是否從活動中的字段正確讀取值。 – Roland 2011-03-08 17:29:45

+0

@Roland,你應該按照我上面的例子來設置你的值在TextField中。 – AkiAki007 2011-03-08 19:01:42

+0

我解決了使用runOnUiThread方法進行測試的問題。這樣我就可以從我的文本中設置文本字段的值。你的例子在Activity本身中設置了值,但這會干擾我的應用程序。 – Roland 2011-03-12 05:38:48