java - How to pass spinner value to the target language in IBM api?
问题描述
I have a spinner consisting of the languages in the IBM library. I want the user to select a language and translate the text into the selected language. I got the value from spinner but I don't know how to pass the value to the target language. Please help.
`enter code here`Spinner s = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, languages);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s.setAdapter(adapter);
text = s.getSelectedItem().toString(); // value from spinner
new Hey().execute();
}
class Hey extends AsyncTask<Void, Void, String> {
String text;
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(Void... voids) {
IamAuthenticator authenticator = new IamAuthenticator("nAh_Z_0X2AS1Vun2MI3UR3lYNRivFRkWaNsZyFwELMul"); //key
LanguageTranslator languageTranslator = new LanguageTranslator("2018-05-01", authenticator);
languageTranslator.setServiceUrl("https://api.eu-gb.language-translator.watson.cloud.ibm.com/instances/83f66689-1c94-4a9b-b595-e2d776f10ded"); //url
TranslateOptions translateOptions = new TranslateOptions.Builder()
.addText("Hello")
.source(Language.ENGLISH)
.target(Language.SPANISH) // need to get user to select the target language from the spinner option
.build();
TranslationResult result = languageTranslator.translate(translateOptions) //translation happens
.execute().getResult();
String som = result.toString();
System.out.println(som);
return som;
}
解决方案
首先,您需要了解如何将值作为参数传递给 AsyncTask。因此,从微调器获取值后,将其传递给 AsyncTask 参数。
您的代码将如下所示:
text = s.getSelectedItem().toString(); // value from spinner
new Hey().execute(text);
现在在 AsyncTask 中,您将检索传递的参数:
class Hey extends AsyncTask<Void, Void, String> {
String text;
@Override
protected String doInBackground(Void... voids) {
String language = (String) params[0]; //can use it further
TranslateOptions translateOptions = new TranslateOptions.Builder()
.addText("Hello")
.source(Language.ENGLISH)
.target(language) // Do check the input format for this and do required conversion
.build();
}
}
推荐阅读
- python - Pandas 中的递归操作
- java - 以下代码片段中 this() 的目的是什么?
- python - 如何从 keras 中的图像批处理数据集中输出图像
- flutter - 无法在命令行上运行颤振
- html - 如何通过 specflow3.4.3 生成 HTML 报告?
- python - 如何通过在 tkinter 中选择两个下拉菜单选项来获取输出结果
- sql - 如何使用 Python 将 Dataframe 放入 SQL where 子句中?
- spring - Spring boot 找不到模板位置调试模式
- c++ - 当我关闭文件资源管理器时,我的 C++ 程序被删除
- javascript - 为什么我的这个 React 代码会出现无限循环?