2013-10-25 39 views
1

我有一個工作TimePickerFragment,它使用當前時間作爲選擇器的默認值。 現在我想傳遞舊的選定值分鐘和小時顯示在選取器中。我怎樣才能做到這一點?傳遞值到TimePickerFragment

這是代碼:

活動:

TimePickerFragment newFragmentNight = TimePickerFragment.newInstance(TO_TIME_PICKER_ID);  
    newFragmentNight.show(getSupportFragmentManager(), "timePicker"); 

DialogFragment:

public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener 
{ 

private int mId; 
private TimePickedListener mListener; 

static TimePickerFragment newInstance(int id) { 
    Bundle args = new Bundle(); 
    args.putInt("picker_id", id); 
    TimePickerFragment fragment = new TimePickerFragment(); 
    fragment.setArguments(args); 
    return fragment; 
} 

public Dialog onCreateDialog(Bundle savedInstanceState) 
{ 
// here I don't want to use the current time, I want to use the time passing from the activity 
final Calendar c = Calendar.getInstance(); 
int hour = c.get(Calendar.HOUR_OF_DAY); 
int minute = c.get(Calendar.MINUTE); 

mId = getArguments().getInt("picker_id"); 


// create a new instance of TimePickerDialog and return it 
return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity())); 
} 

回答

1

嘗試只添加新值newInstance()靜態方法和捆綁這種方式。它可以傳遞與構造函數相同的信息。請嘗試以下操作:

static TimePickerFragment newInstance(int id, int hour, int minute) 
{ 
    Bundle args = new Bundle(); 
    args.putInt("picker_id", id); 
    args.putInt("hour", hour); 
    args.putInt("minute", minute); 
    TimePickerFragment fragment = new TimePickerFragment(); 
    fragment.setArguments(args); 
    return fragment; 
} 

public Dialog onCreateDialog(Bundle savedInstanceState) 
{ 
    Bundle args = getArguments(); 

    final Calendar c = Calendar.getInstance(); 

    //The second input is a default value in case hour or minute are empty 
    int hour = args.getInt("hour", c.get(Calendar.HOUR_OF_DAY)); 
    int minute = args.getInt("minute", c.get(Calendar.MINUTE)); 

    mId = getArguments().getInt("picker_id"); 


    // create a new instance of TimePickerDialog and return it 
    return new TimePickerDialog(getActivity(), this, hour, minute, 
        DateFormat.is24HourFormat(getActivity())); 
} 

希望這有助於。祝你好運!

+0

謝謝soooo多!!!!! – user1390816