2013-07-02 2 views
1

TimePicker가 나타나지만 시간을 선택할 때 나타납니다. 그것은 나에게 예외를 던졌습니다.시간을 설정하는 동안 java.lang.NullPointerException이 발생했습니다.

TimeFragment 클래스. 28 :

import java.util.Calendar; 
import com.actionbarsherlock.app.SherlockDialogFragment; 
import android.app.Dialog; 
import android.app.TimePickerDialog; 
import android.content.Context; 
import android.os.Bundle; 
import android.text.format.DateFormat; 
import android.widget.TimePicker; 

public class TimePickerFragment extends SherlockDialogFragment implements TimePickerDialog.OnTimeSetListener 
{ 
    private TimePickedListener mListener; 
    static int hour; 
    static int minute; 
    static Context mContext; 

    public static TimePickerFragment newInstance(Context context, TimePickedListener listener, Calendar now) 
    { 
     TimePickerFragment dialog = new TimePickerFragment(); 
     mContext = context; 
     hour = now.get(Calendar.HOUR_OF_DAY); 
     minute = now.get(Calendar.MINUTE); 

     return dialog; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) 
    { 
     return new TimePickerDialog(mContext, this, hour, minute, DateFormat.is24HourFormat(getActivity())); 
    } 

    @Override 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) 
    { 
     // when the time is selected, send it to the activity via its callback 
     // interface method 
     Calendar c = Calendar.getInstance(); 
     c.set(Calendar.HOUR_OF_DAY, hourOfDay); 
     c.set(Calendar.MINUTE, minute); 

     mListener.onTimePicked(c); 
    } 

    public static interface TimePickedListener 
    { 
     public void onTimePicked(Calendar time); 
    } 
} 

public void selectTime(final TextView lblTime, final int position) { 
    hideRight(); 
    timeFrag = TimePickerFragment.newInstance(getActivity(), new TimePickedListener() {@ 
     Override 
     public void onTimePicked(Calendar time) { 
      lblTime.setText(DateFormat.format("h:mm a", time)); 
     } 
    }, now); 
    timeFrag.show(getActivity().getSupportFragmentManager(), "timePicker"); 
} 

07-02 17 주 조각 내부 시간을 선택 04.214 : E는/XXX (10341)은 : 예외 uncaught이다 : 07-02 17 : 28 : 04.214 : E/XXX (10341) : java.lang.NullPointerException 07-02 17 : 28 : 04.214 : E/XXX (10341) : com.common.TimePickerFragment.onTimeSet (TimePickerFragment.java:47) 07-02 17 : 28 : 04.214 : E/XXX (10341) : android.app.TimePickerDialog.tryNotifyTimeSet (Tim ePickerDialog.java:130) 07-02 17 : 28 : 04.214 : E/XXX (10341) : android.app.TimePickerDialog.onClick (TimePickerDialog.java:115) 07-02 17 : 28 : 04.214 : E/XXX (10341) : com.android.internal.app.AlertController $ ButtonHandler.handleMessage (AlertController.java:166) 07-02 17 : 28 : 04.214 : E/XXX (10341) : android.os .Handler.dispatchMessage (Handler.java:99) 07-02 17 : 28 : 04.214 : E/XXX (10341) : android.os.Looper.loop (Looper.java:137) 07-02 17:28 : 04.214 : E/XXX (10341) : android.app.ActivityThread.main (ActivityThread.java:4928) 07-02 17 : 28 : 04.214 : E/XXX (10341) : java.lang. reflect.Method.invokeNative (네이티브 메소드) 07-02 17 : 28 : 04.214 : E/XXX (10341) : 에서 java.lang.reflect.Method.invoke (Method.java:511) 07-02 17 : 28 : 04.214 : E/XXX (10341) : at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:791) 07-02 17 : 28 : 04.214 : E/XXX (10341) : com.android.internal.os.ZygoteInit. 주 (ZygoteInit.java:558) 07-02 17 : 28 : 04.214 : E/XXX (10341) : dalvik.system.NativeStart.main에서 (기본 방법)

+0

"시간"은 어떻게 정의되어 있습니까? http://developer.android.com/reference/java/text/DateFormat.html#format(java.util.Date, java.lang.StringBuffer, java.text.FieldPosition)에서도이 링크를 확인하십시오. format() 함수는 세 가지 형식을 가지고 있으며 여러분이 생각하는 것 중 아무 것도 참조하지 않습니다. – g00dy

답변

6

당신은 private TimePickedListener mListener;

를 초기화하는 것을 잊지

변경하십시오. 당신은 어디 private TimePickedListener mListener;를 인스턴스화하지 않았다

public static TimePickerFragment newInstance(Context context, TimePickedListener listener, Calendar now) 
    { 
     TimePickerFragment dialog = new TimePickerFragment(); 
     mContext = context; 
     mListener = listener; 
     hour = now.get(Calendar.HOUR_OF_DAY); 
     minute = now.get(Calendar.MINUTE); 

     return dialog; 
    } 
3

:와 newInstance 방법. 그것은 null을 참조하고 있습니다.

public static TimePickerFragment newInstance(Context context, TimePickedListener listener, Calendar now) 
{ 
    TimePickerFragment dialog = new TimePickerFragment(); 
    mContext = context; 
    hour = now.get(Calendar.HOUR_OF_DAY); 
    minute = now.get(Calendar.MINUTE); 
    mListener = listener; // you missed this line 
    return dialog; 
} 
관련 문제