마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

null 값 좀 잡아주시면 감사하겠쨔용

0 추천
@Override
 public void onCreate(Bundle savedInstanceState) {  
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main);
  this.registerReceiver(this.batteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
  chargeTimer2();
 }

int j = 20;
 public void chargeTimer2(){
  if(statusString.equals("Charging (USB)") || statusString.equals("Charging (AC)")){
   timer = new CountDownTimer(20*1000, 1000){
    @Override
    public void onTick(long millisUntilFinished){
      j--;
      chargeMinute.setText(j+"");
    } 
    @Override
    public void onFinish() {
     timer.cancel();
     }   
    };
    timer.start();
  }
  else{
   timer.cancel();
  }
 }

private BroadcastReceiver batteryInfoReceiver = new BroadcastReceiver() {    
  @Override
  public void onReceive(Context context, Intent intent) {
   // TODO Auto-generated method stub   
   level= intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0);   
   int plugged= intent.getIntExtra(BatteryManager.EXTRA_PLUGGED,0);
   int status= intent.getIntExtra(BatteryManager.EXTRA_STATUS,0);

if(status == BatteryManager.BATTERY_STATUS_CHARGING) {          
           statusString = ("Charging");     
           if(plugged > 0){
            statusString = statusString + " " + ((plugged == BatteryManager.BATTERY_PLUGGED_AC)? "(AC)": "(USB)");
            Toast.makeText(MainActivity.this, "충전을 시작합니다", Toast.LENGTH_SHORT).show();
          }else if(status == BatteryManager.BATTERY_STATUS_DISCHARGING) {
           statusString = ("Discharging");
              } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) {
            statusString = ("Not charging");
           } else if (status == BatteryManager.BATTERY_STATUS_FULL) {
            statusString = ("Full");          
           } else {
            statusString = ("Unknown");
                }       
              chargingStatus.setText(statusString);
             // chargeTimer();
         }
 };

11번줄에서 nullpointerException 발생이 되는데요.

왜 그런지 모르겠어요

 

 

 

앤드류이드 (6,190 포인트) 님이 2013년 11월 1일 질문

2개의 답변

0 추천
 
채택된 답변
statusString 값이 null 일 듯 한데요..

statusString를 onReceive 에서 설정하는 듯 한데,

chargeTimer2 가 수행 된 후 onReceive 가 들어올 가능성이 높습니다.

statusString 에 기본 값을 넣어주시던지 onReceive 이후에 chargeTimer2 를 부르게 변경하세요
사악미소 (65,330 포인트) 님이 2013년 11월 1일 답변
앤드류이드님이 2013년 11월 1일 채택됨
넵..................감사합니다~
0 추천
statusString.equals("xxxxxxxx") 이걸

"xxxxxxxx".equals(statusString) 이렇게 바꾸세요.
whitesnow (8,920 포인트) 님이 2013년 11월 1일 답변
2개의 차이점이 먼지 여쭤봐도 되나요?
statusString 가 null 일순 있어도
"xxxxxxxx"는 null 이 아니니까요
null 일 string 객체에 equals 를 사용하니 문제되는 부분입니다.
아 그렇군요.. 감사합니다.~ 오늘 한수 배우네요.^^
...