2014-02-27 50 views
0

我有一個AlertDialog中生成的TimePicker,所以不知道你的ID。如何獲取用戶設置的值?我想在這個時候每天向他發送一個通知給他(我已經有一個及時的通知)。 然後?他們有什麼建議`如何在AlertDialog中獲取價值TimePicker?

/** Private members of the class */ 
private TextView MostraTime; 
private Button Time; 

private int DayHour; 
private int DayMinute; 

Intent VoltaMenu; 

/** 
* This integer will uniquely define the dialog to be used for displaying 
* time picker. 
*/ 
static final int TIME_DIALOG_ID = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.notify); 

    /** Capture our View elements */ 

    MostraTime = (TextView) findViewById(R.id.MostraTempo); 
    Time = (Button) findViewById(R.id.TempoAlerta); 

    /** Listener for click event of the button */ 
    Time.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      showDialog(TIME_DIALOG_ID); 
     } 
    }); 

    /** Get the current time */ 
    final Calendar cal = Calendar.getInstance(); 
    DayHour = cal.get(Calendar.HOUR_OF_DAY); 
    DayMinute = cal.get(Calendar.MINUTE); 

    /** Display the current time in the TextView */ 
    updateDisplay(); 

} 

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case TIME_DIALOG_ID: 
     return new TimePickerDialog(this, mTimeSetListener, DayHour, 
       DayMinute, false); 

    } 
    return null; 
} 

/** Callback received when the user "picks" a time in the dialog */ 
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 

     DayHour = hourOfDay; 
     DayMinute = minute; 
     updateDisplay(); 
     displayToast(); 
    } 
}; 

/** Updates the time in the TextView */ 
private void updateDisplay() { 
    MostraTime.setText(new StringBuilder().append(pad(DayHour)).append(":") 
      .append(pad(DayMinute))); 
} 

/** Displays a notification when the time is updated */ 
private void displayToast() { 

    VoltaMenu = new Intent(MenuNotificacao.this, Prefs.class); 
    startActivity(VoltaMenu); 

    Toast.makeText(
      this, 
      new StringBuilder().append(
        getResources().getString(R.string.horario) + " ") 
        .append(MostraTime.getText()), Toast.LENGTH_SHORT) 
      .show(); 

} 

/** Add padding to numbers less than ten */ 
private static String pad(int c) { 
    if (c >= 10) 
     return String.valueOf(c); 
    else 
     return "0" + String.valueOf(c); 
} 

}

`

+0

你是說你的'TimePickerDialog.OnTimeSetListener'沒有更新的時間值,當用戶選擇新的價值觀? – Tautvydas

+0

通常有更新的文本視圖,我可以接下來的字符串?因爲我想在這個時候每天發佈一個通知。會工作? –

回答

0

嘗試此鏈接中獲取價值從timepicker..link是 http://androidexample.com/Time_Picker_With_AM_PM_Values_-_Android_Example/index.php?view=article_discription&aid=86&aaid=109

 /********* display current time on screen Start ********/ 
     final Calendar c = Calendar.getInstance(); 
      // Current Hour 
      hour = c.get(Calendar.HOUR_OF_DAY); 
      // Current Minute 
      minute = c.get(Calendar.MINUTE); 

      // set current time into output textview 
      updateTime(hour, minute); 

     /********* display current time on screen End ********/ 

      // Add Button Click Listener 
      addButtonClickListener(); 

     } 

     public void addButtonClickListener() { 

      btnClick = (Button) findViewById(R.id.btnClick); 

      btnClick.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        showDialog(TIME_DIALOG_ID); 

       } 

      }); 

     } 

     @Override 
     protected Dialog onCreateDialog(int id) { 
      switch (id) { 
      case TIME_DIALOG_ID: 

       // set time picker as current time 
       return new TimePickerDialog(this, timePickerListener, hour, minute, 
         false); 

      } 
      return null; 
     } 

     private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() { 


      @Override 
      public void onTimeSet(TimePicker view, int hourOfDay, int minutes) { 
       // TODO Auto-generated method stub 
       hour = hourOfDay; 
       minute = minutes; 

       updateTime(hour,minute); 

      } 

     }; 

     private static String utilTime(int value) { 

      if (value < 10) 
       return "0" + String.valueOf(value); 
      else 
       return String.valueOf(value); 
     } 

     // Used to convert 24hr format to 12hr format with AM/PM values 
     private void updateTime(int hours, int mins) { 

      String timeSet = ""; 
      if (hours > 12) { 
       hours -= 12; 
       timeSet = "PM"; 
      } else if (hours == 0) { 
       hours += 12; 
       timeSet = "AM"; 
      } else if (hours == 12) 
       timeSet = "PM"; 
      else 
       timeSet = "AM"; 


      String minutes = ""; 
      if (mins < 10) 
       minutes = "0" + mins; 
      else 
       minutes = String.valueOf(mins); 

      // Append in a StringBuilder 
      String aTime = new StringBuilder().append(hours).append(':') 
        .append(minutes).append(" ").append(timeSet).toString(); 

       output.setText(aTime); 
     } 
+0

我只是想花時間來設置用戶tratálo我發出通知,當時間到了 –

0

我使它像這樣

public void alertDialog(View view) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    LayoutInflater inflater = LayoutInflater.from(this); 
    View alerdialogV = inflater.inflate(R.layout.alert_layout, null); 
    builder.setView(alerdialogV); 
    builder.setTitle("1st aletdialog"); 
    final TextView timeset = (TextView) alerdialogV.findViewById(R.id.timepicker); 
    final TextView timeset1 = (TextView) alerdialogV.findViewById(R.id.timepicker2); 

    timeset.setOnClickListener(getL(timeset)); 
    timeset1.setOnClickListener(getL(timeset1)); 
    builder.show(); 

這裏是方法

@NonNull 
private View.OnClickListener getL(final TextView t) { 
    return new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final Calendar c = Calendar.getInstance(); 

      int hour = c.getTime().getHours(); 
      int minut = c.getTime().getMinutes(); 
      MyTimePicker tpd = new MyTimePicker(ctx, new TimePickerDialog.OnTimeSetListener() { 
       @Override 
       public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
        t.setText(hourOfDay + ":" + minute); 
       } 
      }, hour,minut, is24HrView); 
      tpd.show(); 

     } 
    }; 
} 

,這是mycustom Timepicker

public class MyTimePicker extends TimePickerDialog { 


private final static int TIME_PICKER_INTERVAL = 5; 
private TimePicker timePicker; 
private final OnTimeSetListener callback; 

public MyTimePicker(Context context, OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView) { 
    super(context, TimePickerDialog.THEME_HOLO_DARK, callBack, hourOfDay, minute/TIME_PICKER_INTERVAL, is24HourView); 
    this.callback = callBack; 
} 

@Override 
public void onClick(DialogInterface dialog, int which) { 
    if (callback != null && timePicker != null) { 
     timePicker.clearFocus(); 
     callback.onTimeSet(timePicker, timePicker.getCurrentHour(), 
       timePicker.getCurrentMinute() * TIME_PICKER_INTERVAL); 
    } 
} 

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    try { 
     Class<?> classForid = Class.forName("com.android.internal.R$id"); 
     Field timePickerField = classForid.getField("timePicker"); 
     this.timePicker = (TimePicker) findViewById(timePickerField 
       .getInt(null)); 
     Field field = classForid.getField("minute"); 
     NumberPicker mMinuteSpinner = (NumberPicker) timePicker 
       .findViewById(field.getInt(null)); 
     mMinuteSpinner.setMinValue(0); 
     mMinuteSpinner.setMaxValue((60/TIME_PICKER_INTERVAL) - 1); 
     List<String> displayedValues = new ArrayList<String>(); 
     for (int i = 0; i < 60; i += TIME_PICKER_INTERVAL) { 
      displayedValues.add(String.format("%02d", i)); 
     } 
     mMinuteSpinner.setDisplayedValues(displayedValues 
       .toArray(new String[0])); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

}