0

最近、CountDownTimer の onTick メソッドで getView() 呼び出しが null を返すというクラッシュ レポートがありました。onTick メソッドを使用して、textView に残り時間を表示します。textView は Fragment 内にあります。

CountDownTimer は UI スレッドで実行されるため、なぜこれが起こったのかわかりません。

この問題の原因と考えられる回避策は何ですか?

ありがとう!

4

1 に答える 1

0

これが私がやった方法です。TextViewを含む自分のカウンタークラスの拡張CountDownTimer。

public class myCounter extends CountDownTimer
{
    TextView counter;

    public myCounter(final long millisInFuture, final long countDownInterval,
                    final TextView newCounter)
    {
        super(millisInFuture, countDownInterval);
        counter = newCounter;
        counter.setText("Left: " + millisInFuture);
    }

    @Override
    public void onFinish()
    {
        counter.setText("GO!");
    }

    @Override
    public void onTick(final long millisUntilFinished)
    {
        counter.setText("Left: " + millisUntilFinished / 1000);
    }
}

それから私の活動で:

public class CountdownViewActivity extends Activity
{

    @Override
    public void onCreate(final Bundle savedInstanceState)
    {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.countdownview);

            final Button startBtn = (Button) findViewById(R.id.startButton);

            //Send total time in milliseconds, the interval to display at, and the TextView from your xml it should display in
            final myCounter countdown = new myCounter(timeInSeconds * 1000, 1000, (TextView) findViewById(R.id.textView4));
            startBtn.setOnClickListener(startClick(countdown));
//MoreStuff
    }

    private OnClickListener startClick(final myCounter countdown)
    {
        return new OnClickListener()
        {
            @Override
            public void onClick(final View v)
            {
                countdown.start();
            }
        };
    }
}
于 2012-07-01T20:48:46.827 に答える