[英]How to get value TimePicker inside AlertDialog?
我有一個AlertDialog內生成的TimePicker,所以不知道您的ID是什么。 如何獲得用戶設定的值? 我想每天在這個時候向您發送通知(我已經有一個及時通知)。 然后:他們的建議是什么?
/** 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);
}
}
`
嘗試通過此鏈接從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);
}
我像這樣
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();
}
};
}
這是我自定義的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();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.