2012-12-06 2 views
0

약간의 도움이 필요합니다. 두 개의 날짜 선택 도구 (from - to)가 포함 된 사용자 지정 경고 대화 상자를 만들었습니다. xml 파일의 경고 레이아웃을 부 풀리고, 날짜 값을 얻으려고하면 프로그램이 캐싱됩니다. 여기에 코드 :맞춤 보낸 사람 AlertDialog

  View fromToLayout = (View)getLayoutInflater().inflate(R.layout.from_to_layout, null); 
     final DatePicker fromPicker = (DatePicker) findViewById(R.id.dpFrom); 
     final DatePicker toPicker = (DatePicker) findViewById(R.id.dpTo); 

     AlertDialog alert = new AlertDialog.Builder(context).create(); 

      alert.setMessage("Insert Interval:");     
      alert.setView(fromToLayout,0,0,0,20); 
      alert.setButton(DialogInterface.BUTTON_POSITIVE,"Ok", new DialogInterface.OnClickListener() 
      { 

       @SuppressWarnings("deprecation") 
       public void onClick(DialogInterface dialog, int which) 
        { 
        // TODO Auto-generated method stub 

         Date dateFrom = new Date(fromPicker.getYear()-1990, fromPicker.getMonth(),fromPicker.getDayOfMonth()); 
         Date dateTo = new Date(toPicker.getYear() - 1990,toPicker.getMonth(),toPicker.getDayOfMonth()); 

         SimpleDateFormat isoFormat = new SimpleDateFormat("yyyyMMdd",Locale.US); 
         SimpleDateFormat dispalyFormat = new SimpleDateFormat("dd-MM-yyyy",Locale.US); 

         String fromDisplay = dispalyFormat.format(dateFrom); 
         String toDisplay = dispalyFormat.format(dateTo); 
         String fromValue = isoFormat.format(dateFrom); 
         String toValue = isoFormat.format(dateTo); 

         CashInInfoActivity.this.setTitle("Cash In " + fromDisplay + " - " + toDisplay);      
         DownloadCashInAsyncTask task = new DownloadCashInAsyncTask(context); 
         task.execute(fromValue,toValue); 

         return; 
        } 
      }); 

      alert.setButton(DialogInterface.BUTTON_NEGATIVE,"Cancel", new DialogInterface.OnClickListener() 
      { 

      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 
       return; 
       } 
      }); 

      alert.show(); 

내가 줄에서 NullPointerException이 발생합니다 : Date dateFrom = new Date(fromPicker.getYear()-1990, fromPicker.getMonth(),fromPicker.getDayOfMonth());

은 로그 :

12-06 11:01:48.919: E/AndroidRuntime(24121): FATAL EXCEPTION: main 
12-06 11:01:48.919: E/AndroidRuntime(24121): java.lang.NullPointerException 
12-06 11:01:48.919: E/AndroidRuntime(24121): at com.example.denandroidapp.CashInInfoActivity$1.onClick(CashInInfoActivity.java:98) 
12-06 11:01:48.919: E/AndroidRuntime(24121): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:159) 
12-06 11:01:48.919: E/AndroidRuntime(24121): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-06 11:01:48.919: E/AndroidRuntime(24121): at android.os.Looper.loop(Looper.java:123) 
12-06 11:01:48.919: E/AndroidRuntime(24121): at android.app.ActivityThread.main(ActivityThread.java:3687) 
12-06 11:01:48.919: E/AndroidRuntime(24121): at java.lang.reflect.Method.invokeNative(Native Method) 
12-06 11:01:48.919: E/AndroidRuntime(24121): at java.lang.reflect.Method.invoke(Method.java:507) 
12-06 11:01:48.919: E/AndroidRuntime(24121): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
12-06 11:01:48.919: E/AndroidRuntime(24121): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
12-06 11:01:48.919: E/AndroidRuntime(24121): at dalvik.system.NativeStart.main(Native Method) 

당신은 일을 잘못 들으 i'am

+0

게시 오류 logcat. –

+0

'onPicker'와'toPicker'가'onClick' 메소드에서 null이 아닌지 확인하십시오. – vasart

+0

그들은 그렇지만 그 이유는 모르겠습니다. –

답변

1

당신은 "fromPicker"에 대해서도 "toPicker"에 대한 의지도 적용 같은 예외가 널 포인터 예외를 얻고있다. 예외

이유는 다음과 같습니다

  • 당신은 동적으로 레이아웃을 팽창하고 있고 DatePicker에서의 참조를합니다.
  • 당신이 동적으로 레이아웃을 팽창하고 아래

처럼 뷰의 객체와 같이 findViewById를 호출해야 다음 컨트롤의 인출 할 어느 때 기억하십시오.

View fromToLayout = (View)getLayoutInflater().inflate(R.layout.from_to_layout, null); 
final DatePicker fromPicker = (DatePicker) fromToLayout.findViewById(R.id.dpFrom); 
final DatePicker toPicker = (DatePicker) fromToLayout.findViewById(R.id.dpTo); 
1

하려고 뭔지 알아 변경 :

final DatePicker fromPicker = (DatePicker) findViewById(R.id.dpFrom); 
final DatePicker toPicker = (DatePicker) findViewById(R.id.dpTo); 

에 :

final DatePicker fromPicker = (DatePicker) fromToLayout.findViewById(R.id.dpFrom); 
final DatePicker toPicker = (DatePicker) fromToLayout.findViewById(R.id.dpTo); 
관련 문제