オプションメニューにこのコードがあります
Dialog dialog = new Dialog(ScheduleActivity.this);
dialog.setTitle("Add Event");
dialog.setContentView(R.layout.add_even_on);
Button datePicker = (Button) dialog.findViewById(R.id.datePicker);
final DialogFragment dateFrag = new MyDatePicker();
datePicker.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dateFrag.show(getSupportFragmentManager(), "datePicker");
}
});
dialog.show();
オプションメニューの[イベントの追加]をクリックすると、ダイアログが表示され、ボタンがDatePickerDialogと表示され、その横にTextViewが選択された日付を反映します。 DatePickerDialogでは、DatePickerDialogの使用方法についてAndroids Developerから取得したクラスを次に示します。
class MyDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener {
int pYear;
int pDay;
int pMonth;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
pYear = year;
pDay = day;
pMonth = month;
}
}
だから私の問題は、DatePickerDialogで[設定]をクリックしたときに値をミリ秒で取得し、DatePickerDialogを自動的に閉じて、DatePickerDialogを開くボタンと日付を反映するTextviewを含むダイアログに戻る方法です。 DatePickerDialogを選択しました... DatePickerDialog内で選択したものを表示しません...
これが私が何を意味するかの写真です、
したがって、[日付の選択]ボタンをクリックすると、次の図に示すように、DatePickerDialogボックスが表示されます
そして、私が設定をクリックすると、そのDatePickerDialogからのミリ秒単位の値を考慮に入れたかった
ここでは、いくつかのコードを提供します。
public class NewReminder extends Activity {
private static final int DATE_DIALOG_ID = 1;
private int year;
private int month;
private int day;
EditText editTextDate;
private String currentDate;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addnewreminder);
initialize();
context = getApplicationContext();
OnClickListener listenerDate = new OnClickListener() {
@Override
public void onClick(View arg0) {
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
showDialog(DATE_DIALOG_ID);
}
};
editTextDate.setOnClickListener(listenerDate);
}
private void initialize() {
// TODO Auto-generated method stub
editTextDate = (EditText) findViewById(R.id.editTextDate);
}
private void updateDisplay() {
currentDate = new StringBuilder().append(day).append(".")
.append(month + 1).append(".").append(year).toString();
Log.i("DATE", currentDate);
}
OnDateSetListener myDateSetListener = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int i, int j, int k) {
year = i;
month = j;
day = k;
updateDisplay();
editTextDate.setText(currentDate);
}
};
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this, myDateSetListener, year, month,
day);
}
return null;
}
}
古いダイアログは廃止されました。フラグメントを実装します。
アクティビティをフラグメントアクティビティに移行します。
public class YourActivity extends FragmentActivity
フラグメントの作成ダイアログ:
public class TimePickerFragment extends DialogFragment {
private OnDateSetListener listener;
public TimePickerFragment(OnDateSetListener listener) {
this.listener=listener;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of TimePickerDialog and return it
return new DatePickerDialog(getActivity(), listener, year,month,day);
}
}
実装インターフェース(パッケージ:import Android.app.DatePickerDialog.OnDateSetListener):
public class YourActivity extends FragmentActivity implements OnDateSetListener{
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
}
}
ShowDialog関数を追加します。
public class YourActivity extends FragmentActivity implements OnDateSetListener{
showDateDialog(){
FragmentManager fm = getSupportFragmentManager();
TimePickerFragment newFragment = new TimePickerFragment(this);
newFragment.show(fm, "date_picker");
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
}
}
XMLにTextViewとボタンを追加します
<TextView
Android:id="@+id/searchText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="TextView" />
<Button
Android:id="@+id/search"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Search" />
Javaファイルに次のコードを追加します
public class DatePickerDialogExample extends Activity {
TextView txtDate;
private int mYear, mMonth, mDay, mHour, mMinute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtDate = (TextView) findViewById(R.id.searchText);
Button search = (Button) findViewById(R.id.search);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Process to get Current Date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
// Launch Date Picker Dialog
DatePickerDialog dpd = new DatePickerDialog(PrayTimeActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
// Display Selected date in textbox
txtDate.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
dpd.show();
}
});
}
}
間違いなく機能するこのコードを試してください:
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dpd = new DatePickerDialog(getActivity(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
birth_Date.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
dpd.show();
これは、コンテキストとTextViewをパラメーターとして取得し、ユーザーが日付を選択すると、そのテキストビューにDateを設定する私のヘルパー関数です。
public static void showDate(final Context context, final TextView textView) {
if (textView != null) {
final Calendar myCalendar = Calendar.getInstance();
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String myFormat = "MM/dd/yy"; // In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
//UIHelper.showLongToastInCenter(context, sdf.format(myCalendar.getTime()));
textView.setText(sdf.format(myCalendar.getTime()));
}
};
new DatePickerDialog(context, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show();
} else {
UIHelper.showLongToastInCenter(context, "Unable to show Date picker");
}
}
あなたはこのコードを試すことができます。それは確かにあなたに役立つでしょう..疑いなし!
protected Dialog onCreateDialog(int id) {
Calendar c=Calendar.getInstance();
int Sysday=c.get(Calendar.DAY_OF_MONTH);
int Sysmonth=c.get(Calendar.MONTH);
int Sysyear=c.get(Calendar.YEAR);
int Sysmin=c.get(Calendar.MINUTE);
int Syshour=c.get(Calendar.HOUR);
switch (id) {
case TIME_DIALOG:
return new TimePickerDialog(this, myTimePicker , Syshour, Sysmin, false);
case DATE_DIALOG:
return new DatePickerDialog(this, myDatePicker, Sysyear, Sysmonth, Sysday);
}
return null;
}
Koltinでこのように使用します
DatePickerDialog(this as Activity, DatePickerDialog.OnDateSetListener { p0, y, m, _ -> func.invoke(y, m + 1) }, c.get(Calendar.YEAR),
c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH))
.show()
どこからでも使える
tvDateFrom.click {
showDatePicker(c) { y, m ->
Utils.debugger("DATE FROM ", " y + $y m $m")
tvDateFrom.text = "$m-$y".toDate()
}
}
Calendar c1 = Calendar.getInstance();
int year = c1.get(Calendar.YEAR);
int month = c1.get(Calendar.MONTH);
int day = c1.get(Calendar.DAY_OF_MONTH);
DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
if(arg0.isShown()){
//do further code here
}
}
};
DatePickerDialog dp = new DatePickerDialog(YourActivity.this, myDateListener, year, month, day);
dp.show();