2011-06-22 47 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