0

我不知道为什么我的 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 变量会使我的应用程序崩溃吗?谢谢!

4

1 回答 1

2

我以前没有想到这一点,我以为你只想增加int,所以我没有考虑logTime()再次调用,也没有看到它怎么会因为这么简单的概念而崩溃。

您的问题很可能是顺序,因为使用您当前的代码,textView方法中的方法将null在访问时抛出 NPE。

这是因为findViewById()inlogTime()将返回null(未设置内容视图 - 因此找不到任何东西):

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 if(firstTime == 0){
    logTime(false);
    firstTime++;
}
于 2013-02-24T03:40:43.570 回答