执行if语句时Android应用程序崩溃了吗?

时间:2013-02-24 03:21:13

标签: android crash integer

我不知道为什么我的Android应用程序崩溃了。我注意到它发生在我输入简单的firstTime变量时,但我老老实实地不知道为什么firstTime变量会导致整个应用程序崩溃。如果我拿出if语句,其他所有部分都有效。这是我到目前为止所提出的:

public class MainActivity extends Activity {

static int firstTime = 0;
BroadcastReceiver receiver = null;
@Override
protected void onCreate(Bundle savedInstanceState) {

    if(firstTime == 0){
        logTime(false);
        firstTime++;
    }
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
    filter.addAction(Intent.ACTION_SCREEN_OFF); 
    receiver = new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
          if(arg1.getAction().equals(Intent.ACTION_SCREEN_OFF)){
            logTime(true);
          }
          else if(arg1.getAction().equals(Intent.ACTION_SCREEN_ON)){
            logTime(false);
          }
        } 
      }; 
      registerReceiver(receiver, filter);

}

可能有人知道为什么firstTime变量会崩溃我的应用程序?谢谢!

1 个答案:

答案 0 :(得分:2)

我之前没有想到这一点,我以为你只想增加int,所以我没有考虑再次拨打logTime(),并没有&#39看看它如何通过如此简单的概念崩溃。

您的问题大多数可能是订单,因为使用您当前的代码时,方法中的textView将为null,并且会在访问时抛出NPE。

这是因为findViewById()中的logTime()会返回null(内容视图未设置 - 因此无法找到任何内容):

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 if(firstTime == 0){
    logTime(false);
    firstTime++;
}