将值设置为TextField
问题描述:
我想编写一个测试,测试我的布局中的字段与生成的业务对象之间的正确映射关系。但是,当我尝试将值设置为我的文本字段时,出现错误,说我不应该尝试将值设置为来自另一个线程的文本字段。所以基本上我无法将活动设置为可以尝试创建业务对象的状态。将值设置为TextField
但是如何编写这样的测试呢?我更喜欢如果我不必向仅支持测试的活动添加代码,但是我可能无法避免这种情况?
在此先感谢 罗兰
答
查看对象只能从UI线程访问。您必须尝试从您在其他地方创建的工作线程中设置这些值。
你应该看看的AsyncTask类,看看是否能解决你的问题(它有是在UI线程像onResult,onProgress,......执行的功能)
另一种可能性是使用Activity.runOnUiThread(Runnable)函数。
这就是我可以说的所有细节。也许如果你发布一些示例代码,你会得到更准确的答案。
答
凡在你的活动是你想设置的文本字段?
如果你只是需要一个简单的测试,你可以通过onCreate方法。下面是我的功能代码snippit:
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
_dateView = (TextView) findViewById(R.id.ScheduleDate);
_dateView.setText("TODAY");
}
我使用runOnUiThread和Thread.sleep(50)解决了该问题,以允许更新ui。 – Roland 2011-03-08 20:09:19