Android - 计时器启动和停止

标签 android

我想创建一个可以通过一个按钮启动和停止的计时器。使用下面的代码,我只得到一个空指针异常。我怎样才能避免它,或者无论如何都将这两个功能设置为按钮?

public class MainActivity extends ActionBarActivity {
  Chronometer focus;
  Button start, stop, reset;
  long timeElapsed = SystemClock.elapsedRealtime() - focus.getBase();
  int x;


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

    timeElapsed = x;
    start = (Button) findViewById(R.id.button1);       
    focus = (Chronometer) findViewById(R.id.chronometer1);

    start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(x == 0){
            focus.start();
            }

            if(x != 0){
            focus.stop();    
            }
        }
    });

}

}

最佳答案

您在变量初始化之前使用它们。 'focus' 和 'x' 在初始化之前使用。请改用此代码以避免空指针异常:

     public class MainActivity extends ActionBarActivity {
  Chronometer focus;
  Button start, stop, reset;
  long timeElapsed = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    start = (Button) findViewById(R.id.button1);       
    focus = (Chronometer) findViewById(R.id.chronometer1);
    // to get the elapsed time use setonChronometerTickListener
    focus.setOnChronometerTickListener(new OnChronometerTickListener() {
         @Override
         public void onChronometerTick(Chronometer chronometer) {
             timeElapsed = SystemClock.elapsedRealtime() - focus.getBase();
         }
    });
    start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(timeElapsed == 0){
            focus.setBase(SystemClock.elapsedRealtime());
            focus.start();
            }

            if(timeElapsed != 0){
        timeElapsed = 0;
            focus.stop();    
            }
        }
    });

}

关于Android - 计时器启动和停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44950867/

相关文章:

Android 4.0 模拟器无法启动

android - 如何在 Libgdx 中更改 AdMob 方向

Java - 在自身内部使用枚举值

sqlite中的Android真实转义字符串

java - Libgdx - 纹理过滤器的TexturePacker组合

android - 加载数据后隐藏 ProgressDialog

android - 检查 RecyclerView 是否可滚动

android - 开关按钮重置无法正常工作

android - 抽屉导航未从自定义菜单按钮打开

Android - 膨胀 TextView 时出错