TextSwitcher NullPointer错误

HAx*_*xor 7 android nullpointerexception textview android-ui

我真的很困惑.我正在尝试做一个简单的文本交换器,它将增加数量并根据数量更新价格.现在在我的xml中,我在TextSwitcher中有类似TextView的东西,只是为了增加数量.我得到了textview findViewById(R.id.quantity).

所以我必须找到设置增量的数量(我正在实现ViewFactory)

switcher = (TextSwitcher) findViewById(R.id.switcher);
switcher.setFactory(this);
quantity = (TextView) findViewById(R.id.quantity);
Run Code Online (Sandbox Code Playgroud)

我也覆盖了makeView()

@Override
     public View makeView() {
        return quantity;
    }
Run Code Online (Sandbox Code Playgroud)

此外,当按下增量按钮时,我增加计数器并将切换器上的文本设置为当前计数.像这样:

switcher.setText(String.valueOf(currentQuantity));
Run Code Online (Sandbox Code Playgroud)

谁能让我知道我做错了什么?我一直在这一行得到我的nullpointer:

switcher.setFactory(this);
Run Code Online (Sandbox Code Playgroud)

这是XML片段:

<TextSwitcher android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/switcher">
            <TextView android:text="TextView" android:id="@+id/quantity" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
        </TextSwitcher>
Run Code Online (Sandbox Code Playgroud)

Jav*_*ave 26

TextSwitcher文档:

setText(CharSequence text)设置下一个视图的文本并切换到下一个视图.这可用于为旧文本设置动画并为其中的下一个文本设置动画.

这意味着您将需要至少两个文本视图,一个包含旧文本,另一个用于接收新文本和动画.以下XML应该有效:

    <TextSwitcher 
        android:id="@+id/counter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </TextSwitcher>
Run Code Online (Sandbox Code Playgroud)