2011-06-22 10 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); 

    } 
} 

あなたが助けてもらえ私はどうですか? uは任意のコントロールにfindViewById(R.id.controlid);を供給することを忘れ意味

+0

申し訳ありません。機能は次のとおりです: – mmm286

+1

uf ..英語と英語の混合.. so uncool。 –

答えて

0

java.lang.NullPointerExceptionはあなたのコードでこれを見つけるためにしようと、これはハッピーコーディング:) :)をこのエラーを解決可能性があります - Pragna

+0

はい私は:public void onCreate(Bundle savedInstanceState){ \t super.onCreate(savedInstanceState); \t setContentView(R.layout.inicio); \t \t \t最終カレンダーc = Calendar.getInstance(); // INFLAR \t \tボタンbtnValidar =(ボタン)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

をしようとする前にfindViewById()を使用してbtnValidarを初期化するようにしてくださいそれにアクセスする。

+0

はいI行います。public voidのonCreate(バンドルsavedInstanceState){ \t super.onCreate(savedInstanceState)。 \t setContentView(R.layout.inicio); \t \t最終カレンダーc = Calendar.getInstance(); // INFLAR \t \tボタンbtnValidar =(ボタン)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'でローカルコピーを作成してinit it – Asahi

関連する問題

 関連する問題