2011-03-08 83 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