2017-02-04 14 views
0

Microsoft Translator APIを使用してAndroid Studioに翻訳アプリを作成しようとしていますが、何らかの理由で、テキストを翻訳する言語を決定するswitch文が実行されていません。 は私のコードは次のとおりです。この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: The program should work perfectly if this appears 

これは、3行目があったであろうので、switch文は、実行されていなかった意味します。その代わり、私はそれをやっただろうと思った何の

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

logcatに。誰かが理由を説明できますか?

UPDATE:別のエラーもあります:

ViewRootImpl: sendUserActionEvent() mView == null 
+1

いいえ変数 "text"はSpinnerの選択した言語であり、text1は翻訳しようとしているテキストです。 – MCoder

+1

あなたは 'break;'を追加することを忘れました –

+0

Um ...どこにブレークを入れますか? – MCoder

答えて

1

あなたのswitch文にブレークを追加することを忘れている:各caseに対して

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."); 
} 

、あなたは休憩を追加する必要があります。

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を取得しているようですdefault:


UPDATE

に行きますtext値の場合。

+0

問題は、デフォルトの:log文が実行されなかったことです。 – MCoder

+0

@MCoder:あなたはスイッチのための 'text'を与えることを忘れています –

+0

何らかの理由で、それはまだ3番目のメッセージを記録しませんでした。 – MCoder

0

switch文を忘れただけでなく、text1の代わりにテキストを書き込んだので、スイッチ式に間違いがあります。

public String getTranslatedText (String **text1**){ 
     Translate.setClientId("CLIENT ID"); 
     Translate.setClientSecret("CLIENT SECRET"); 
     String translatedText = ""; 
     Log.e("Checkpoint", "getTranslatedText() was called"); 
     try { 
      switch (**text1**) { 
       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."); 
         break; 

       case "French": 
        translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.FRENCH); 
        outputLanguageLabel.setText("French"); 
         break; 
        // location of Unhandled exception 
       case "Spanish": 
        translatedText = Translate.execute(text1, Language.AUTO_DETECT, Language.SPANISH); 
        outputLanguageLabel.setText("Spanish"); 
         break; 
          ....... 
+1

あなた自身の答えを投稿する前に、コメントやその他の回答を読んでみてください。 –

+0

textとtext1は異なる値を保持することを意味します。 – MCoder

関連する問題