为什么此switch语句不运行?

MCoder

我正在尝试使用Microsoft Translator API在Android Studio中制作翻译器应用程序,但是由于某种原因,决定将某些文本翻译成哪种语言的switch语句未运行。我的代码是:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      LayoutInflater li = LayoutInflater.from(context);
      final View promptsView = li.inflate(R.layout.alertdialog, null);
      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

      alertDialogBuilder.setView(promptsView);
      final Spinner spinner = (Spinner) promptsView.findViewById(R.id.LanguagePicker);
      final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(Text.this,
                        R.array.language, android.R.layout.simple_spinner_item);

      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

      spinner.setAdapter(adapter);

      alertDialogBuilder.setCancelable(false)
      /*The setPositiveButton determines which language I want it translated to.*/
                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                             public void onClick(DialogInterface dialog,int id) {

                               //this is the main line

                               text = spinner.getSelectedItem().toString();

                               spinner.setAdapter(adapter);
                               String r = textInput.getText().toString();
                               allTheTranslatedText = getTranslatedText(r);
                               Log.e("Checkpoint", "Program started to execute getTranslatedText()");
                                            textOutput.setText(allTheTranslatedText);

                             }
                           })

                        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                             public void onClick(DialogInterface dialog, int id) {
                               dialog.cancel();
                             }
                            });
        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();


      }
    });

    }

/* getTranslatedText() outputs text */
public String getTranslatedText (String text1){
  Translate.setClientId("CLIENT ID");
  Translate.setClientSecret("CLIENT SECRET");
  String translatedText = "";
  Log.e("Checkpoint", "getTranslatedText() was called");
  try {
    switch (text) {
      case "English":
        translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.ENGLISH); // location of Unhandled exception
        outputLanguageLabel.setText("English");
        Log.e("Checkpoint", "The program should work perfectly if this appears.");

      case "French":
        translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.FRENCH);
        outputLanguageLabel.setText("French");
        // location of Unhandled exception
      case "Spanish":
        translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.SPANISH);
        outputLanguageLabel.setText("Spanish");
// location of Unhandled exception
      case "German":
        translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.GERMAN);
        outputLanguageLabel.setText("German");
// location of Unhandled exception
      case "Italian":
        translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.ITALIAN);
        outputLanguageLabel.setText("Italian");
// location of Unhandled exception
      case "Russian":
        translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.RUSSIAN);
        outputLanguageLabel.setText("Russian");
// location of Unhandled exception
      case "Mandarin":
        translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.CHINESE_TRADITIONAL);
        outputLanguageLabel.setText("Mandarin");
// location of Unhandled exception
      case "Korean":
        translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.KOREAN);
        outputLanguageLabel.setText("Korean");
// location of Unhandled exception
      case "Japanese":
        translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.JAPANESE);
        outputLanguageLabel.setText("Japanese");

// location of Unhandled exception
      default:
        Log.e("Checkpoint", "Program didn't recognize text.");
    }

  } catch (Exception e) {
            e.printStackTrace();
  }
  return translatedText;
}

}

我使用logcat语句来确定正在运行的代码,而不是正在运行的代码,但是当我选择英语作为我希望将文本翻译成的语言时,logcat提交了以下内容:

Checkpoint: Program started to execute getTranslatedText()
Checkpoint: getTranslatedText() was called

而不是我认为会完成的事情:

Checkpoint: Program started to execute getTranslatedText()
Checkpoint: getTranslatedText() was called
Checkpoint: The program should work perfectly if this appears

这意味着switch语句未运行,因为第三行应该在logcat上。有人可以解释为什么吗?

更新:还有另一个错误:

ViewRootImpl: sendUserActionEvent() mView == null
耶稣爱你

您忘记在switch语句中添加break:

switch (text) {
  case "English":
    translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.ENGLISH); // location of Unhandled exception
    outputLanguageLabel.setText("English");
    Log.e("Checkpoint", "The program should work perfectly if this appears.");

    // Need to add break; after case
    break;

    ...

  default:
    Log.e("Checkpoint", "Program didn't recognize text.");
}

对于每个case,您都需要添加中断。如果您不是,所有情况都将转到default:


更新

text开关情况似乎是错误的:

public String getTranslatedText (String text1){
        Translate.setClientId("CLIENT ID");
        Translate.setClientSecret("CLIENT SECRET");
        String translatedText = "";
        Log.e("Checkpoint", "getTranslatedText() was called");
        try {

            // Should check it first
            Log.d("TEXT", "text is = " + text);
            switch (text) {
               case "English":
               ...
               defaut:
               ...
            }
        }
        ..
      }

您需要检查text价值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章