我正在使用Java开发一个使用Google Translate API的移动应用程序(BlackBerry)。我设置它以便用户可以在登录前指定一种语言,然后一旦他们登录,我就会在显示到屏幕的每一段文本周围包装,这将根据所选语言翻译文本。
我的问题是需要在给定的屏幕上翻译多个内容。因此,我必须在每个屏幕上多次访问Google Translate API。为此,我在新线程上打开HTTPConnection。所以我将我的屏幕界面传递给Translator类,然后Translator类将调用该屏幕的回调方法(requestSucceeded()或requestFailed())。
现在,让我说我翻译屏幕标题和屏幕正文。那是两个独立的HTTP连接。因此,当标题被翻译时,我希望我的requestSucceeded()方法在我的标题LabelField上设置setText。翻译正文时,我希望我的requestSucceeded()方法在我的身体LabelField上设置setText。
让requestSucceeded()方法区分要更新的不同字段的最佳方法是什么?目前,我正在向Translator传递两件事(通过String []数组):要翻译的文本和描述要翻译的项目的“cookie”。然后我在requestSucceeded()回调方法中使用if语句,根据“cookie”(译者将与翻译后的文本一起发回)更新相应的字段。
我觉得必须有更好的方法来做所有这些。有没有人有任何建议?
谢谢!
答案 0 :(得分:0)
首先,我建议您阅读Command Pattern。它基本上是一种设计方法,可用于将每个翻译请求封装在知道如何处理结果的对象中。然后我建议有一个可以插入这些命令的集合,并且你的翻译线程可以从中获取输入。这样,您可以(取决于API的工作方式)在同一HTTP连接上处理一批转换请求。