0

私はこれを正しく行っていますか?私は単純なカウントダウン タイマーを実装して、地に足をつけようとしています。

私のタイマークラスは私のアクティビティにネストされておらず、きれいにするためにすべて独自のJavaファイルに入れられています。ここ:

public class McatTimer extends CountDownTimer {

    private TextView timer_tv;

    public McatTimer(long millisInFuture, long countDownInterval, TextView textview) {
        super(millisInFuture, countDownInterval);
        this.timer_tv = textview;
    }

    @Override   
    public void onFinish() {
        timer_tv.setText("DONE!");
    }

    @Override
    public void onTick(long millisUntilFinished) {
        timer_tv.setText("seconds remaining: " + millisUntilFinished / 1000);
    }

}

ここにlogcatがあります:

10-03 08:40:36.007: E/AndroidRuntime(2582): FATAL EXCEPTION: main
10-03 08:40:36.007: E/AndroidRuntime(2582): java.lang.NullPointerException
10-03 08:40:36.007: E/AndroidRuntime(2582):     at com.mangodeveloper.mcathomie.McatTimer.onTick(McatTimer.java:22)
10-03 08:40:36.007: E/AndroidRuntime(2582):     at android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:124)
10-03 08:40:36.007: E/AndroidRuntime(2582):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-03 08:40:36.007: E/AndroidRuntime(2582):     at android.os.Looper.loop(Looper.java:123)
10-03 08:40:36.007: E/AndroidRuntime(2582):     at android.app.ActivityThread.main(ActivityThread.java:3683)
10-03 08:40:36.007: E/AndroidRuntime(2582):     at java.lang.reflect.Method.invokeNative(Native Method)
10-03 08:40:36.007: E/AndroidRuntime(2582):     at java.lang.reflect.Method.invoke(Method.java:507)
10-03 08:40:36.007: E/AndroidRuntime(2582):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-03 08:40:36.007: E/AndroidRuntime(2582):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-03 08:40:36.007: E/AndroidRuntime(2582):     at dalvik.system.NativeStart.main(Native Method)

私のアクティビティには、これらが適切な場所にあります。

private McatTimer mcatTimer;

....

mcatTimer = new McatTimer(GAME_PREFERENCES_ROUNDTIME*1000, 1000, timerTv);
mcatTimer.start();

また、これらのログキャットを読むためのトリックはありますか? 申し訳ありませんが、私は独学です。

4

1 に答える 1

1

TextViewオブジェクトがnullのようです。電話をかける前に、TextViewを初期化したことを確認してください。

mcatTimer = new McatTimer(GAME_PREFERENCES_ROUNDTIME*1000, 1000, timerTv);

これを呼んで、

timerTv=(TextView)findViewById(R.id.textview);
于 2012-10-03T08:50:36.300 に答える