Android анимирует текст при вызове setText()

Я хочу, чтобы анимированный текст появлялся и исчезал при изменении расширения TextSwitcher чтобы определить это один раз, так как у меня есть много TextSwitcher объекты.

Однако я продолжаю получать нулевой указатель "java.lang.NullPointerException android.widget.TextSwitcher.setText(TextSwitcher.java:80) при выполнении этого:

homeTeamTextView.setText("Text");

Я решил расширить класс TextSwitcher следующим образом:

public class MyTextSwitcher extends TextSwitcher{

public MyTextSwitcher(Context context, AttributeSet attrs)
{
    super(context, attrs);
    // TODO Auto-generated constructor stub

    setInAnimation(context,R.anim.fade_in);
    setOutAnimation(context,R.anim.fade_out);
}}

Деятельность

private MyTextSwitcher homeTeamTextView;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    homeTeamTextView = (MyTextSwitcher) findViewById(R.id.hometeam);
    awayScoreTextView = (TextView) findViewById(R.id.awayteamscore);
    homeScoreTextView = (TextView) findViewById(R.id.hometeamscore);
    gameStatusTextView = (TextView) findViewById(R.id.gamestatus);
    gameClockTextView = (TextView) findViewById(R.id.gameclock);
    gameStartTextView = (TextView) findViewById(R.id.gamestart);
    gameClockSectionTextView = (TextView) findViewById(R.id.gameclocksection);

    LoadDataAsyncTask loadDataTask = new LoadDataAsyncTask();
    loadDataTask.execute();
}

Планировка:

  <com.MyTextSwitcher
        android:id="@+id/hometeam"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />

1 ответ

Похоже, что TextSwitcher является обычным ViewSwitcher, который может содержать только TextViews. Когда вы вызываете setText(), он пытается получить следующий вид. Вы можете найти его в источнике: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/widget/TextSwitcher.java, но это ноль. Я думаю, что вы должны добавить textView внутри вашего TextSwitcher (или даже два textView для правильно работающей анимации).

Другие вопросы по тегам