2013-09-20 1 views
2

У меня есть 2 TextViews, из которых я могу назвать таймер. Но Im не в состоянии выяснить, из которого TextBox я называю Time Picker. Ниже приводится код snippset от деятельности:Показатель считывания, из которого вызывается TimePicker

case R.id.tv_to_night: 
    // show the time picker dialog 
    TimePickerFragment newFragmentNight = new TimePickerFragment(); 
    newFragmentNight.show(getSupportFragmentManager(), "timePicker to"); 

    break; 
case R.id.tv_from_night: 

    // show the time picker dialog 
    TimePickerFragment newFragment = new TimePickerFragment(); 
    newFragment.show(getSupportFragmentManager(), "timePicker from"); 

    break; 

Здесь я хочу знать, из которого TextBox я получаю время:

public void onTimePicked(Calendar time) { 
     if(depending from were it was called) 
      tv_from_night.setText(DateFormat.format("h:mm a", time)); 
     else 
      tv_to_night.setText(DateFormat.format("h:mm a", time)); 
    } 

TimePickerFragment

import android.app.Activity; 
import android.app.Dialog; 
import android.app.TimePickerDialog; 
import android.os.Bundle; 
import android.support.v4.app.DialogFragment; 
import android.text.format.DateFormat; 
import android.widget.TimePicker; 

import java.util.Calendar; 

public class TimePickerFragment extends DialogFragment implements 
     TimePickerDialog.OnTimeSetListener { 
    private TimePickedListener mListener; 

    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // use the current time as the default values for the picker 
     final Calendar c = Calendar.getInstance(); 
     int hour = c.get(Calendar.HOUR_OF_DAY); 
     int minute = c.get(Calendar.MINUTE); 

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

    @Override 
    public void onAttach(Activity activity) { 
     // when the fragment is initially shown (i.e. attached to the activity), 
     // cast the activity to the callback interface type 
     super.onAttach(activity); 
     try { 
      mListener = (TimePickedListener) activity; 
     } catch(ClassCastException e) { 
      throw new ClassCastException(activity.toString() 
        + " must implement " + TimePickedListener.class.getName()); 
     } 
    } 

    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); 
    } 
} 

ответ

1

Решение

Активность:

case R.id.tv_to_night:   
    TimePickerFragment newFragmentNight = TimePickerFragment.newInstance(TO_TIME_PICKER_ID); 
    newFragmentNight.show(getSupportFragmentManager(), "timePicker"); 
    break; 
case R.id.tv_from_night:      
    TimePickerFragment newFragment = TimePickerFragment.newInstance(FROM_TIME_PICKER_ID); 
    newFragment.show(getSupportFragmentManager(), "timePicker"); 
    break; 

Здесь вы получите время с идентификатором:

public void onTimePicked(Calendar time, int id) { 

    Log.i("TimePicker", "Time picker called from id " + id); 

    switch(id) { 

    case FROM_TIME_PICKER_ID: 
     // do thomething 

     break; 

    case TO_TIME_PICKER_ID: 
     // do thomething 
     break; 
    } 

} 

TimePickerFragment:

import android.app.Activity; 
import android.app.Dialog; 
import android.app.TimePickerDialog; 
import android.os.Bundle; 
import android.support.v4.app.DialogFragment; 
import android.text.format.DateFormat; 
import android.widget.TimePicker; 

import java.util.Calendar; 

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) { 
     // use the current time as the default values for the picker 
     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())); 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     // when the fragment is initially shown (i.e. attached to the activity), 
     // cast the activity to the callback interface type 
     super.onAttach(activity); 
     try { 
      mListener = (TimePickedListener) activity; 
     } catch(ClassCastException e) { 
      throw new ClassCastException(activity.toString() 
        + " must implement " + TimePickedListener.class.getName()); 
     } 
    } 

    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); 

     if(mListener != null) 
      mListener.onTimePicked(c, mId); 
    } 

    public static interface TimePickerDialogListener { 
     public void onTimeSet(int id, TimePicker view, int hourOfDay, int minute); 
    } 

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

 Смежные вопросы

  • Нет связанных вопросов^_^