2011-06-22 44 views
0

我試圖讓一個按鈕,當我執行一個功能按鈕,但它給了我一個FC錯誤:禁用運行時

06-22 11:26:25.050: WARN/dalvikvm(688): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
06-22 11:26:25.089: ERROR/AndroidRuntime(688): FATAL EXCEPTION: main 
06-22 11:26:25.089: ERROR/AndroidRuntime(688): java.lang.NullPointerException 
06-22 11:26:25.089: ERROR/AndroidRuntime(688):  at com.es.inicio$1.onDateChanged(inicio.java:58) 
06-22 11:26:25.089: ERROR/AndroidRuntime(688):  at android.widget.DatePicker.notifyDateChanged(DatePicker.java:397) 
06-22 11:26:25.089: ERROR/AndroidRuntime(688):  at android.widget.DatePicker.access$100(DatePicker.java:46) 
06-22 11:26:25.089: ERROR/AndroidRuntime(688):  at android.widget.DatePicker$1.onChanged(DatePicker.java:100) 
06-22 11:26:25.089: ERROR/AndroidRuntime(688):  at android.widget.NumberPicker.notifyChange(NumberPicker.java:340) 
06-22 11:26:25.089: ERROR/AndroidRuntime(688):  at android.widget.NumberPicker.changeCurrent(NumberPicker.java:330) 
06-22 11:26:25.089: ERROR/AndroidRuntime(688):  at android.widget.NumberPicker$3.onClick(NumberPicker.java:153) 
06-22 11:26:25.089: ERROR/AndroidRuntime(688):  at android.view.View.performClick(View.java:2485) 
06-22 11:26:25.089: ERROR/AndroidRuntime(688):  at android.view.View$PerformClick.run(View.java:9080) 
06-22 11:26:25.089: ERROR/AndroidRuntime(688):  at android.os.Handler.handleCallback(Handler.java:587) 
l.......................... 

我的代碼是:

DatePicker.OnDateChangedListener listenerCambiado = new DatePicker.OnDateChangedListener() { 

     @Override 
     public void onDateChanged(DatePicker view, int year, int monthOfYear, 
       int dayOfMonth) { 
      // TODO Auto-generated method stub 
       mYear = year; 
       mMonth = monthOfYear; 
       mDay = dayOfMonth; 
       Log.d("PRUEBA","ENTRAMOS EN LISTENER DEL DATEPCKER"); 
       //comprobarFecha(mYear,mMonth,mDay); 
       if (comprobarFechas(mYear,mMonth,mDay)){ 
        btnValidar.setEnabled(true);    
       }else{ 

        btnValidar.setEnabled(false); 

       } 
     } 
    }; 

     The function is: 

public boolean comprobarFechas (int ano, int mes, int dia){ 
    Calendar c = Calendar.getInstance(); 
    if (ano > c.get(Calendar.YEAR)){ 
     Toast.makeText(getApplicationContext(),"AÑO INCORRECTO", Toast.LENGTH_LONG).show(); 
     Log.d("PRUEBA","AÑO INCORRECTO"); 
     return false; 
     //btnValidar.setEnabled(false); 
    }else if (mes > c.get(Calendar.MONTH) && ano == c.get(Calendar.YEAR)){   
     Toast.makeText(getApplicationContext(),"MES INCORRECTO", Toast.LENGTH_LONG).show(); 
     Log.d("PRUEBA","MES INCORRECTO"); 
     return false; 
     //btnValidar.setEnabled(false); 
    }else { 
     Log.d("PRUEBA","ESTA BIEN"); 
     return true; 
     //btnValidar.setText("pulsado"); 
     //btnValidar.setEnabled(true); 

    } 
} 

你能幫我好嗎?

+0

對不起。功能是: – mmm286

+1

uf ..混合西班牙語代碼與英語..所以uncool。 –

回答

0

java.lang.NullPointerException意味着而忘提供findViewById(R.id.controlid);任何控制試圖找出這在你的代碼可能這解決了這個錯誤編碼快樂:) :): - Pragna

+0

是的,我這樣做:public void onCreate(Bundle savedInstanceState){ \t super.onCreate(savedInstanceState); \t setContentView(R.layout.inicio); \t \t \t final Calendar c = Calendar.getInstance(); // INFLAR \t \t Button btnValidar =(Button)findViewById(R.id.btnValidar); \t \t btnValidar.setEnabled(false); \t \t \t \t DatePicker calendario =(DatePicker)findViewById(R.id.datePicker1); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); calendario.init(mYear,mMonth,mDay,listenerCambiado); ; \t} – mmm286

0

確保btnValidar使用findViewById()嘗試之前初始化訪問它。

+0

是我做的:公共無效的onCreate(捆綁savedInstanceState){ \t super.onCreate(savedInstanceState); \t setContentView(R.layout.inicio); \t \t final Calendar c = Calendar.getInstance(); // INFLAR \t \t Button btnValidar =(Button)findViewById(R.id.btnValidar); \t \t btnValidar.setEnabled(false); \t \t \t \t DatePicker calendario =(DatePicker)findViewById(R.id.datePicker1); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); calendario.init(mYear,mMonth,mDay,listenerCambiado); ; \t} – mmm286

+0

你在'onCreate'中初始化局部變量。使它成爲一個類成員或在'onDateChanged'中創建一個本地副本並初始化它 – Asahi