我正在尝试使用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] 删除。
我来说两句