NullPointerException durante el uso de TTS en CustomListview

Tengo listview personalizado que contiene el contenido y la opción TTS, mientras que el uso de TTS su excepción puntero null de lanzamiento, ListView también no viene que muestra mi applicaton ha parado.Error se muestra en Logcat.

Applicationadapter.java

public class ApplicationAdapter extends ArrayAdapter<Application> implements TextToSpeech.OnInitListener{ private List<Application> items; private LayoutInflater inflator; private MainActivity activity; private ProgressDialog dialog; public TextToSpeech tts; public ImageButton btnaudioprayer; public TextView text1; ArrayAdapter<String> adapter; public ApplicationAdapter(MainActivity context, List<Application> items){ super(context, R.layout.activity_row, items); this.items = items; inflator = LayoutInflater.from(getContext()); activity=context; } @Override public int getCount(){ return items.size(); } @Override public View getView(int position, View convertView, ViewGroup parent){ ViewHolder holder = null; tts = new TextToSpeech(activity, ApplicationAdapter.this); //View v = convertView; if ( convertView == null ){ convertView = inflator.inflate(R.layout.activity_row, null); holder = new ViewHolder(); holder.text2 = (TextView) convertView.findViewById(R.id.text2); holder.text1 = (TextView) convertView.findViewById(R.id.text1); holder.count = (TextView) convertView.findViewById(R.id.count); holder.pray = (Button) convertView.findViewById(R.id.pray); holder.chk = (CheckBox) convertView.findViewById(R.id.checkbox); holder.btnSpeak = (ImageButton) convertView.findViewById(R.id.btnaudioprayer); convertView.setTag(holder); }else { holder = (ViewHolder) convertView.getTag(); } holder.chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton view, boolean isChecked) { int getPosition = (Integer) view.getTag(); items.get(getPosition).setSelected(view.isChecked()); } }); holder.pray.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int getPosition= (Integer)v.getTag(); StringBuffer sb1 = new StringBuffer(); sb1.append("ID :"); sb1.append(Html.fromHtml(""+items.get(getPosition).getId())); sb1.append("\n"); activity.praydata(items.get(getPosition).getId()); } }); holder.btnSpeak.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View V) { speakOut(); } }); Application app = items.get(position); holder.chk.setTag(position); holder.pray.setTag(position); holder.text2.setText(Html.fromHtml(app.getTitle())); holder.text1.setText(Html.fromHtml(app.getContent())); holder.count.setText(app.getCount()+""); holder.chk.setChecked(app.isSelected()); return convertView; } static class ViewHolder { public TextView text2; public TextView text1; public TextView count; public CheckBox chk; public Button pray; public ImageButton btnSpeak; private TextToSpeech tts; } @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { int result = tts.setLanguage(Locale.US); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { Log.e("TTS", "This Language is not supported"); } else { speakOut(); } } else { Log.e("TTS", "Initilization Failed!"); } } private void speakOut() { String text = text1.getText().toString(); tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); } 

Aquí menciono mi error logcat también. En mi error logcat, está mostrando el error en esta línea String text = text1.getText().toString(); . Está lanzando NullPointerException y está mostrando el archivo log.e también. No está ejecutando el método speakout() .

 07-18 12:17:11.456: E/TTS(2314): This Language is not supported 07-18 12:17:11.456: I/TextToSpeech(2314): Connected to ComponentInfo{com.svox.pico/com.svox.pico.PicoService} 07-18 12:17:11.586: D/AndroidRuntime(2314): Shutting down VM 07-18 12:17:11.586: W/dalvikvm(2314): threadid=1: thread exiting with uncaught exception (group=0x40a70930) 07-18 12:17:11.597: E/AndroidRuntime(2314): FATAL EXCEPTION: main 07-18 12:17:11.597: E/AndroidRuntime(2314): java.lang.NullPointerException 07-18 12:17:11.597: E/AndroidRuntime(2314): at com.example.jsonandroid.ApplicationAdapter.speakOut(ApplicationAdapter.java:182) 07-18 12:17:11.597: E/AndroidRuntime(2314): at com.example.jsonandroid.ApplicationAdapter.onInit(ApplicationAdapter.java:168) 07-18 12:17:11.597: E/AndroidRuntime(2314): at android.speech.tts.TextToSpeech.dispatchOnInit(TextToSpeech.java:640) 07-18 12:17:11.597: E/AndroidRuntime(2314): at android.speech.tts.TextToSpeech.access$1000(TextToSpeech.java:52) 07-18 12:17:11.597: E/AndroidRuntime(2314): at android.speech.tts.TextToSpeech$Connection.onServiceConnected(TextToSpeech.java:1297) 07-18 12:17:11.597: E/AndroidRuntime(2314): at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1101) 07-18 12:17:11.597: E/AndroidRuntime(2314): at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1118) 07-18 12:17:11.597: E/AndroidRuntime(2314): at android.os.Handler.handleCallback(Handler.java:725) 07-18 12:17:11.597: E/AndroidRuntime(2314): at android.os.Handler.dispatchMessage(Handler.java:92) 07-18 12:17:11.597: E/AndroidRuntime(2314): at android.os.Looper.loop(Looper.java:137) 07-18 12:17:11.597: E/AndroidRuntime(2314): at android.app.ActivityThread.main(ActivityThread.java:5039) 07-18 12:17:11.597: E/AndroidRuntime(2314): at java.lang.reflect.Method.invokeNative(Native Method) 07-18 12:17:11.597: E/AndroidRuntime(2314): at java.lang.reflect.Method.invoke(Method.java:511) 07-18 12:17:11.597: E/AndroidRuntime(2314): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 

En mi listview del custume tengo texto y el botón de TTS, mientras que chascando el botón él tiene que jugar el audio del contenido.

speakOut(); la llamada de speakOut(); En onInit(int status) y modificaría el speakOut(); Función como esta:

 private void speakOut(String text) { tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); } 

Y tu onclicklistener cambiaría a esto aquí:

  @Override public void onClick(View v) { View parent = (View)v.getParent(); ViewHolder vh = (ViewHolder)parent.getTag(); TextView tv = vh.text1; speakOut(tv.getText().toString()); } 

Eso debería funcionar para usted.

Su variable text1 no se inicializa, pero se declara, por lo tanto haciendo un text1.getText() , que está esencialmente tratando de getText() desde null .

Tal vez lo que quieres es el holder.text1 ( holder de la ViewHolder )?

  • Sistema lengua turca para el texto al discurso
  • ¿Cómo configurar el volumen para el método de "hablar" de texto a voz?
  • ¿Por qué no se llama a UtteranceProgress Listener a Text to Speach?
  • Android Texto a voz añadir texto de voz continuamente
  • Texto de Android a voz Voz masculina
  • Lenguaje hindi
  • Manejo de múltiples idiomas sin demora en el TTS de Android
  • UtteranceProgressListener no funciona para Android TTS
  • Usar texto a voz en una llamada de voz
  • Transmisión de notificaciones de texto a voz durante la conducción
  • ¿Es Google TTS Engine en todos los teléfonos Android, y dónde puedo conseguirlo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.