Note that there are some explanatory texts on larger screens.

plurals
  1. POWhy do I get NullPointerException when use setCurrentText or setText for TextSwitcher?
    primarykey
    data
    text
    <p><code>TextSwitcher</code> is part of <code>ListView</code> row (defined in xml). I define the text of TextSwitcher in the setViewValue:</p> <pre><code>switch(viewId) { case R.id.tw_text: TextSwitcher twText = (TextSwitcher) view; twText.setCurrentText("test text"); return true; </code></pre> <p>This code works perfectly if <code>twText</code> is <code>TextView</code>. But it returns NullPointerException with <code>TextSwitcher</code>:</p> <pre><code>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.measureChildWithMargins(ViewGroup.java:3132) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:696) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LinearLayout.onMeasure(LinearLayout.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.measureChildWithMargins(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.measureChildWithMargins(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.measureChildWithMargins(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.measureChildWithMargins(ViewGroup.java:3132) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LinearLayout.onMeasure(LinearLayout.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.measureChildWithMargins(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.measureChildWithMargins(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.LinearLayout.measureVertical(LinearLayout.java:526) 05-22 10:24:08.781: ERROR/AndroidRuntime(3348): at android.widget.LinearLayout.onMeasure(LinearLayout.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.measureChildWithMargins(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.performTraversals(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.NativeStart.main(Native Method) </code></pre> <p><strong>Update 1</strong>: <a href="http://android-argentina.blogspot.com/2010/11/android-tip-textswitcher-and.html">looks like</a> I need to add setFactory() to my code. But if I do the following:</p> <pre><code> TextSwitcher twText = (TextSwitcher) view; twText.setFactory(new ViewSwitcher.ViewFactory() { @Override public View makeView() { TextView t = new TextView(MainActivity.this); return t; } }); </code></pre> <p>I am getting another error:</p> <pre><code>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) </code></pre> <p><strong>Update 2</strong>: I've added <code>twText.removeAllViews()</code> before <code>twText.setFactory()</code>. It works, but looks like not the best way to delete and add Views again. How can I check if Views are already there?</p> <p>Also, I would like to keep formatting/style of my TextSwitcher in the xml. Usage of setFactory doesn't allow me to do so. What can I do?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload