Android:适用于CountDownTimer的Seekbar

梨子

我想为时间倒数添加一个搜索栏,所以我的编码如下:

public class MyCountDownTimer extends CountDownTimer 
{
    public MyCountDownTimer(long startTime, long interval) 
    {
        super(startTime, interval);
        time_progress_bar = (SeekBar) findViewById(R.id.time_progress_bar);
        time_progress_bar.setMax((int) (startTime));  //LINE 312    
    }

    @Override
    public void onFinish()
    {
        buttonNext.setText("GAME OVER!");
        timesup_high_score_dialog();
    }

    @Override
    public void onTick(long millisUntilFinished) 
    {
        time_remaining = millisUntilFinished;
        buttonNext.setText("   " + millisUntilFinished / 1000 + "." + millisUntilFinished % 1000);
        time_progress_bar.setProgress((int) (time_remaining));  
    }
}

但是它会发出以下NPE错误,如Logcat中所示:

01-26 23:03:44.271: E/AndroidRuntime(18951): FATAL EXCEPTION: main
01-26 23:03:44.271: E/AndroidRuntime(18951): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.abc.abc/com.abc.abc.Game_middle}: java.lang.NullPointerException
01-26 23:03:44.271: E/AndroidRuntime(18951):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at android.app.ActivityThread.access$700(ActivityThread.java:168)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at android.os.Looper.loop(Looper.java:137)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at android.app.ActivityThread.main(ActivityThread.java:5493)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at java.lang.reflect.Method.invokeNative(Native Method)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at java.lang.reflect.Method.invoke(Method.java:525)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at dalvik.system.NativeStart.main(Native Method)
01-26 23:03:44.271: E/AndroidRuntime(18951): Caused by: java.lang.NullPointerException
01-26 23:03:44.271: E/AndroidRuntime(18951):    at com.abc.abc.Game_middle$MyCountDownTimer.<init>(Game_middle.java:312)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at com.abc.abc.Game_middle.onCreate(Game_middle.java:153)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at android.app.Activity.performCreate(Activity.java:5372)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
01-26 23:03:44.271: E/AndroidRuntime(18951):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
01-26 23:03:44.271: E/AndroidRuntime(18951):    ... 11 more

问题:

如何正确为CountDownTimer添加搜索栏?无论我是否在311行中声明time_progress_bar,NPE错误仍然存​​在。

谢谢!

卢克

试试这个。

public class MainActivity extends Activity {
    private static final String TAG = MainActivity.class.getName();
    private TextView mTxtTime;
    private SeekBar mSkbCountDown;

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

        mTxtTime = (TextView) findViewById(R.id.txt_time);
        mSkbCountDown = (SeekBar) findViewById(R.id.skb_count_down);
        mSkbCountDown.setProgress(mSkbCountDown.getMax());

        new MyCountDown(100000, 1000).start();
    }

    public class MyCountDown extends CountDownTimer {

        public MyCountDown(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
            mSkbCountDown.setMax((int) millisInFuture);
        }

        @Override
        public void onFinish() {
            mTxtTime.setText("Game Over!!");
        }

        @Override
        public void onTick(long millisUntilFinished) {
            long timeRemaining = millisUntilFinished;
            mTxtTime.setText("   " + millisUntilFinished / 1000 + "."
                    + millisUntilFinished % 1000);
            mSkbCountDown.setProgress((int) (timeRemaining));
            Log.i(TAG, "onTick: " + millisUntilFinished);
        }

    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CountDownTimer 适用于 Android Studio,不适用于设备

来自分类Dev

适用于Android的OpenSSL

来自分类Dev

适用于Android的Pusher

来自分类Dev

适用于Android的Rhino

来自分类Dev

适用于 Android 的 isInViewport

来自分类Dev

适用于Android的自定义SeekBar,出现错误-inflateexception二进制xml错误膨胀类等

来自分类Dev

适用于Android的Android片段

来自分类Dev

onCheckedChangeListener不适用于Android Studio

来自分类Dev

适用于Android和OpenSSL的Qt

来自分类Dev

适用于HEVC的Android MediaCodec

来自分类Dev

AppObservable是否必须适用于Android?

来自分类Dev

适用于Android的Scala库

来自分类Dev

隐藏适用于Android的ActionBar> 4.1

来自分类Dev

安装适用于Android的Estimote SDK

来自分类Dev

适用于speex的Android NDK设置

来自分类Dev

适用于ARM的Android SDK

来自分类Dev

适用于Android开发的Light ide

来自分类Dev

适用于Android的SQLCipher getReadableDatabase()继承

来自分类Dev

使addAction适用于android通知

来自分类Dev

适用于Android的OpenCV安装

来自分类Dev

适用于Android NDK的Netlink实施

来自分类Dev

适用于Android的Lib Panorama Spherical

来自分类Dev

适用于Android的加载程序插件

来自分类Dev

适用于Android的libGDX动画

来自分类Dev

ANDROID:适用于不同尺寸的ImageView

来自分类Dev

YouTube网址(适用于Android videoview)

来自分类Dev

适用于android adb的python绑定

来自分类Dev

适用于Gradle的Android DSL文档

来自分类Dev

安装适用于Android的Ubuntu