【问题标题】:Unable to display translated text on text view无法在文本视图上显示翻译的文本
【发布时间】:2021-06-04 05:04:04
【问题描述】:

我正在使用设备翻译 API 上的机器学习套件来翻译文本。虽然翻译工作正常,但我无法在我的文本视图中显示翻译后的文本。我尝试使用 setText 方法,但文本中没有显示任何内容视图。一切都显示在 logcat 中。

我在 Android Studio 工作

编辑: 这显示正在下载的模型

 TranslatorOptions options =
                    new TranslatorOptions.Builder()
                            .setSourceLanguage(TranslateLanguage.ENGLISH)
                            .setTargetLanguage(TranslateLanguage.BENGALI)
                            .build();
            final Translator englishBengaliTranslator =
                    Translation.getClient(options);

            //DOWNLOAD THE MODEL
            DownloadConditions conditions = new DownloadConditions.Builder()
                    .requireWifi()
                    .build();
            englishBengaliTranslator.downloadModelIfNeeded(conditions)
                    .addOnSuccessListener(
                            new OnSuccessListener() {
                                @Override
                                public void onSuccess(Object o) {

                                }

                                //@Override
                                public void onSuccess(Void v) {
                                    // Model downloaded successfully. Okay to start translating.
                                    // (Set a flag, unhide the translation UI, etc.)
                                    Toast.makeText(getApplicationContext(), "Model Downloaded.Translation will start ", Toast.LENGTH_SHORT).show();
                                }
                            })
                    .addOnFailureListener(
                            new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    // Model couldn’t be downloaded or other internal error.
                                    // ...
                                    Toast.makeText(getApplicationContext(), "Model could not be Downloaded. ", Toast.LENGTH_SHORT).show();
                                }
                            });

在这段代码的 sn-p 中,我调用了 translate 函数(因为模型现在已下载)

englishBengaliTranslator.translate(stringResult)
                    .addOnSuccessListener(
                            new OnSuccessListener() {
                                @Override
                                public void onSuccess(Object o) {

                                }

                                //@Override
                                public void onSuccess(@NonNull String translatedText1) {
                                    textViewTranslatedText.setText(translatedText1);

                                }
                            })
                    .addOnFailureListener(
                            new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    // Error.
                                    // ...
                                    Toast.makeText(getApplicationContext(), "Text could not be translated. ", Toast.LENGTH_LONG).show();
                                }
                            });

我使用了 setText 函数,但翻译后的文本仍然显示在 logcat 而不是 textview 中(翻译工作完全正常)。如何在我的 textView 而不是 logcat 中显示它?任何线索都会有帮助!

这是显示翻译文本的logcat图像:enter image description here

【问题讨论】:

  • 如果你能分享一些你的代码会很有帮助
  • 是的,对不起,我希望现在更清楚了
  • 您发布的代码中没有找到 Log.d()。
  • 是的,我知道我没有写日志语句,为什么会显示在那里??
  • TextView 也可能有问题。您能否粘贴 XML 代码,并且在设置之前确保 translatedText1 实际上不是空的。

标签: android api textview translation


【解决方案1】:

试试这个代码,

englishBengaliTranslator.downloadModelIfNeeded(conditions)
        .addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                // Model downloaded successfully. Okay to start translating.
                // (Set a flag, unhide the translation UI, etc.)
                Toast.makeText(getApplicationContext(), "Model Downloaded.Translation will start ", Toast.LENGTH_SHORT).show();
            }
        })
        .addOnFailureListener(
                new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        // Model couldn’t be downloaded or other internal error.
                        // ...
                        Toast.makeText(getApplicationContext(), "Model could not be Downloaded. ", Toast.LENGTH_SHORT).show();
                    }
                });

上面的代码什么都不做。我刚刚删除了不必要的接口。

但是下面的代码做了一些事情。我的意思是它指定了返回类型。

englishBengaliTranslator.translate(stringResult)
        .addOnSuccessListener(new OnSuccessListener<String>() {
            @Override
            public void onSuccess(String s) {
                if(textViewTranslatedText!=null)
                    textViewTranslatedText.setText(translatedText1);
                else
                    Log.d(TAG, "onSuccess: translation Done but text view null");
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                //Handle onFailure
            }
        });

【讨论】:

  • 是的,它起作用了我忘记指定类型字符串。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 2022-01-05
  • 1970-01-01
相关资源
最近更新 更多