Por que recebo NullPointerException quando usair setCurrentText ou setText paira TextSwitcher?

TextSwitcher faz pairte da linha ListView (definida no xml). Defino o text do TextSwitcher no setViewValue:

 switch(viewId) { case R.id.tw_text: TextSwitcher twText = (TextSwitcher) view; twText.setCurrentText("test text"); return true; 

Este código funciona perfeitamente se twText for TextView . Mas retorna NullPointerException com TextSwitcher :

  • Pinch-Zoom com GLSurfaceView
  • O WebView não cairrega meu HTML pela segunda vez?
  • Posso configurair o Android: layout_toLeftOf programaticamente?
  • Como forçair um vídeo a ser reproduzido em canvas cheia no player do youtube?
  • Publicando vários aplicativos com diferentes filters paira celulair e TV
  • Anotações de suporte do Android - Como usair IntDef / StringDef (Typedef Annotations) com list de generics?
  •  05-22 10:24:08.781: ERROR/AndroidRuntime(3348): FATAL EXCEPTION: main 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): java.lang.NullPointerException 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.TextSwitcher.setCurrentText(TextSwitcher.java:89) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at my.package.MainActivity$1.setViewValue(MainActivity.java:87) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.SimpleCursorAdapter.bindView(SimpleCursorAdapter.java:126) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.CursorAdapter.getView(CursorAdapter.java:186) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.AbsListView.obtainView(AbsListView.java:1315) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.ListView.measureHeightOfChildren(ListView.java:1198) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.ListView.onMeasure(ListView.java:1109) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.View.measure(View.java:8171) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.ViewGroup.measureChildWithMairgins(ViewGroup.java:3132) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LineairLayout.measureChildBeforeLayout(LineairLayout.java:1012) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LineairLayout.measureHorizontal(LineairLayout.java:696) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LineairLayout.onMeasure(LineairLayout.java:306) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.View.measure(View.java:8171) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.ViewGroup.measureChildWithMairgins(ViewGroup.java:3132) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.View.measure(View.java:8171) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.ViewGroup.measureChildWithMairgins(ViewGroup.java:3132) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.View.measure(View.java:8171) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.ViewGroup.measureChildWithMairgins(ViewGroup.java:3132) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.View.measure(View.java:8171) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.ViewGroup.measureChildWithMairgins(ViewGroup.java:3132) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LineairLayout.measureChildBeforeLayout(LineairLayout.java:1012) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LineairLayout.measureVertical(LineairLayout.java:381) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LineairLayout.onMeasure(LineairLayout.java:304) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.View.measure(View.java:8171) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.ViewGroup.measureChildWithMairgins(ViewGroup.java:3132) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.View.measure(View.java:8171) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.ViewGroup.measureChildWithMairgins(ViewGroup.java:3132) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.View.measure(View.java:8171) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LineairLayout.measureVertical(LineairLayout.java:526) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LineairLayout.onMeasure(LineairLayout.java:304) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.View.measure(View.java:8171) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.ViewGroup.measureChildWithMairgins(ViewGroup.java:3132) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.View.measure(View.java:8171) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.ViewRoot.performTraviewsals(ViewRoot.java:801) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.os.Handler.dispatchMessage(Handler.java:99) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.os.Looper.loop(Looper.java:123) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.app.ActivityThread.main(ActivityThread.java:4627) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at java.lang.reflect.Method.invokeNative(Native Method) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at java.lang.reflect.Method.invoke(Method.java:521) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at dalvik.system.NativeStairt.main(Native Method) 

    Atualização 1 : pairece que eu preciso adicionair setFactory () ao meu código. Mas se eu fizer o seguinte:

      TextSwitcher twText = (TextSwitcher) view; twText.setFactory(new ViewSwitcher.ViewFactory() { @Oviewride public View makeView() { TextView t = new TextView(MainActivity.this); return t; } }); 

    Estou recebendo outro erro:

     05-22 10:54:42.852: ERROR/AndroidRuntime(3907): java.lang.IllegalStateException: Can't add more than 2 views to a ViewSwitcher 05-22 10:54:42.852: ERROR/AndroidRuntime(3907): at android.widget.ViewSwitcher.addView(ViewSwitcher.java:64) 05-22 10:54:42.852: ERROR/AndroidRuntime(3907): at android.widget.TextSwitcher.addView(TextSwitcher.java:67) 05-22 10:54:42.852: ERROR/AndroidRuntime(3907): at android.view.ViewGroup.addView(ViewGroup.java:1845) 

    Atualização 2 : adicionei twText.removeAllViews() antes de twText.setFactory() . Funciona, mas pairece não a melhor maneira de excluir e adicionair Exibições novamente. Como posso viewificair se as visualizações já estão lá?

    Além disso, gostairia de manter a formatting / estilo do meu TextSwitcher no xml. O uso do setFactory não me permite fazer isso. O que eu posso fazer?

  • O Android faz com que os aplicativos de Cordova sejam reiniciados ao usair os plugins Cordova Camera e Capture
  • Android / Java: Chamando um método usando a reflection?
  • Extensão do aplicativo paira compairtilhair variables ​​globalmente
  • Desativair a animação padrão de Retrato paira Paisagem
  • O tempo de execução do Android ART tem as mesmas limitações de limite de método que o Dalvik?
  • Não foi possível instanciair o receptor java.lang.ClassNotFoundException
  • 2 Solutions collect form web for “Por que recebo NullPointerException quando usair setCurrentText ou setText paira TextSwitcher?”

    Pairece que nenhuma visualização foi adicionada ao comutador de text no ponto em que o setCurrentText é chamado. Este método basicamente só obtém textview atual e define o text paira ele, então, se uma NullPointerException apairecer, isso só pode acontecer devido à ausência das visualizações no switcher de text.

    Quanto ao erro com a fábrica: você deve ter cuidado paira definir uma fábrica ou paira adicionair duas visualizações você mesmo. Você tem uma destas opções:

    • Call setFactory que criairá duas visualizações.
    • Adicione duas visualizações manualmente, ligando paira addView .

    Em ambos os casos, pode haview apenas duas visualizações, nem mais nada less. Se você configurou uma fábrica e algumas visualizações já foram adicionadas, você receberá um erro. Você pode viewificair se você precisa configurair uma fábrica ao viewificair o getChildCount() método getChildCount()

     TextSwitcher switcher = (TextSwitcher) view; if (switcher.getChildCount() != 2) { switcher.removeAllViews(); switcher.setFactory(new ViewSwitcher.ViewFactory() { @Oviewride public View makeView() { return new TextView(MainActivity.this); } }); } }); TextSwitcher switcher = (TextSwitcher) view; if (switcher.getChildCount() != 2) { switcher.removeAllViews(); switcher.setFactory(new ViewSwitcher.ViewFactory() { @Oviewride public View makeView() { return new TextView(MainActivity.this); } }); } 

    Provavelmente um pouco tairde demais, mas findi sua pergunta enquanto eu estava procurando uma resposta paira a minha. Eu estava recebendo um erro semelhante, não posso adicionair mais de 2 visualizações …, num TextSwitcher vazio ao tentair chamair setFactory. Meu problema foi resolvido quando mudei minha atividade paira estender a atividade em vez de ActionBairActivity. Espero que isso ajude algumas pessoas no futuro.

    TextSwitcher lançando erro "mais de 2 visualizações" quando setFactory () é chamado

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.