2012-06-22 2 views
3

시간을 변경하기 위해 시간 선택 도구를 클릭하면 강제 종료됩니다.강제 종료 시간 변경 : Time Picker (NPE)

아무도 내 코드에서 문제가 어디 있는지 말해 줄 수 있습니까? 기계적 인조 인간.

STACK_TRACE=java.lang.NullPointerException 
at android.widget.TimePicker.updateInputState(TimePicker.java:553) 
at android.widget.TimePicker.access$000(TimePicker.java:55) 
at android.widget.TimePicker$2.onValueChange(TimePicker.java:149) 
at android.widget.NumberPicker.notifyChange(NumberPicker.java:1777) 
at android.widget.NumberPicker.changeCurrent(NumberPicker.java:1455) 
at android.widget.NumberPicker.changeCurrentByOne(NumberPicker.java:1481) 
at android.widget.NumberPicker.access$100(NumberPicker.java:70) 
at android.widget.NumberPicker$2.onClick(NumberPicker.java:592) 
at android.view.View.performClick(View.java:3519) 
at android.view.View$PerformClick.run(View.java:14140) 
at android.os.Handler.handleCallback(Handler.java:605) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4424) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
at dalvik.system.NativeStart.main(Native Method) 
+2

이가 – Anu

+0

.... 당신의 코드를 게시하시기 바랍니다 내 코드 .... – PanjaabiMunda

+0

@PanjaabiMunda : 현재 활동 레이아웃이 layoutDateTimePickerPopup인지 확인하십시오. –

답변

2

이 알려진 네이티브 안드로이드 버그 : 이 내 코드는 ......

timePickerDateTimePickerPopup = (TimePicker) layoutDateTimePickerPopup.findViewById(R.id.timePicker_datetimepicker); 
      timePickerDateTimePickerPopup.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS); 
      timePickerDateTimePickerPopup.setIs24HourView(true); 
      timePickerDateTimePickerPopup.setCurrentHour(mCalendar.get(Calendar.HOUR_OF_DAY)); 
      timePickerDateTimePickerPopup.setCurrentMinute(mCalendar.get(Calendar.MINUTE)); 

      timePickerDateTimePickerPopup.setOnTimeChangedListener(this); 

      dateTimePickerPopup.setTouchable(true); 
      dateTimePickerPopup.setFocusable(true); 
      dateTimePickerPopup.setOutsideTouchable(true); 
      Drawable image_saved = context.getResources().getDrawable(R.drawable.dummy_bg); 
      dateTimePickerPopup.setBackgroundDrawable(image_saved); 

내 로그 캣은 NullPointerException이을 보여줍니다. bug #24387 in Android Bug Tracker을 참조하십시오.

0

마찬가지로 알려진 버그 인 것 같습니다. 가능한 해결 방법은 EditText를 찾고 "focusable"속성을 false로 설정할 때까지 아이들을 통해 반복 할 수 있습니다.

재귀,

// level is just a counter for reading better Logs 
private void hideFocusable(ViewGroup vg, int level) 
{ 
    for(int i=0; i < vg.getChildCount(); i++) 
    { 
     try 
     { 
       ViewGroup vt = (ViewGroup) vg.getChildAt(i); 
       Log.i("NODE",level+") "+ vg.getChildAt(i).getClass().getName()); 

       hideFocusable(vt, level+1); 

     }catch (ClassCastException e) { 
       View vf = (View) vg.getChildAt(i); 

       Log.i("LEAF",level+") "+ vf.getClass().getName()); 

       // here you can pick EditText and setFocusable to false 
       if(vf.getClass().equals(EditText.class)) 
        vf.setFocusable(false); 

     } 

    } 
} 
2

AndroidManifest.xmlandroid:Theme.Black에 내 응용 프로그램의 테마를 변경. 나를 위해 문제를 해결했다.

styles.xml

내 조각의 스타일이 달라 보이는이 스타일을 추가하지만 지금은 작동합니다.

enter image description here

업데이트 : 나는 나의 TimePicker에 재산 android:descendantFocusability="blocksDescendants" 를 추가, 스타일을 변경하지 않고이 문제를 해결 한

<TimePicker 
    android:id="@+id/toTimePicker" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:descendantFocusability="blocksDescendants" />