java - 如何在 IBM api 中将 spinner 值传递给目标语言?

标签 java android ibm-cloud spinner language-translation

我有一个由 IBM 库中的语言组成的微调器。我希望用户选择一种语言并将文本翻译成所选语言。我从微调器获得了值,但我不知道如何将该值传递给目标语言。请帮忙。

`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();
    }
}

关于java - 如何在 IBM api 中将 spinner 值传递给目标语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61334788/

相关文章:

java - 主要变体搜索 : how to keep track of the best move

java - Spring Vaadin 主题

android - AsyncTask 中的 HTMLcleaner

android - textview 只显示大写字母

push-notification - 哪个服务也是用户提供的服务?

mysql - 在 Bluemix 应用程序上使用 Bluemix 的 SQL 数据库服务与 ClearDB MySQL 的优势

eclipse - 在哪里可以获取用于离线安装的 IBM Eclipse Tools for Bluemix?

java - 在 Java 中,获取整数的每个数字及其比较位置的最佳方法是什么?

java - 如果我向非 sleep 线程发送许多中断会有害吗

android - 如何从更新的源文件构建Android Studio/Gradle?