在Java中为Text to Speech设置所选语言

时间:2016-11-19 19:42:28

标签: android android-studio nullpointerexception locale text-to-speech

我有许多语言的列表,用户可以选择这些语言进行文本到语音转换操作。我希望设置用户为tts选择的语言。但是setLanguage需要一个Locale,在那个阶段,我只有一个String。所以这就是我试过的,但是我得到了一个nullpointer异常:

@Override
public void onClick(View view) {
    Languages currentLanguages = languagesList.get(getAdapterPosition());
    Snackbar snackbar;
    snackbar = Snackbar.make(view, currentLanguages.getLocaleDisplay() + " selected", Snackbar.LENGTH_INDEFINITE)
            .setAction("Next", new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(v.getContext(), MainActivity.class);
                    String chosenLanguage = localeDisplay.getText().toString();
                    System.out.println(chosenLanguage);
                    intent.putExtra("language_key", chosenLanguage);
                    v.getContext().startActivity(intent);
                }
            });
    Locale chosenLocale = localeDisplay.getTextLocale();
    chosenLocale.getLanguage();
    myTTS.setLanguage(chosenLocale);
    View snackBarView = snackbar.getView();
    snackBarView.setBackgroundColor(grey_blue);
    snackbar.show();
}

我非常感谢有关为什么这不起作用的一些指示。谢谢!

这是logcat:

FATAL EXCEPTION: main
   Process: com.madhatter.nat.pronounce, PID: 864
   java.lang.NullPointerException: Attempt to invoke virtual method 'int android.speech.tts.TextToSpeech.setLanguage(java.util.Locale)' on a null object reference
       at com.madhatter.nat.pronounce.LanguagesRecycler.RecyclerAdapter$MyViewHolder$1.onClick(RecyclerAdapter.java:63)
       at android.view.View.performClick(View.java:5198)
       at android.view.View$PerformClick.run(View.java:21147)
       at android.os.Handler.handleCallback(Handler.java:739)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:148)
       at android.app.ActivityThread.main(ActivityThread.java:5417)
       at java.lang.reflect.Method.invoke(Native Method)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

编辑:getAdapterPosition()为我提供了单击的语言编号。如何根据文件转发器列表中的位置设置文本转语音引擎的语言?

0 个答案:

没有答案