0

AndroidでDate Pickerを作成するためにShow Dialogを使用していましたが、それを使用して正常に実行できました。日付ピッカーをbuttonClickに表示したいのですが、非推奨のshowDialogを使用して実行しました..

Main Activity

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final Calendar c = Calendar.getInstance();
    pYear= c.get(Calendar.YEAR);
    pMonth = c.get(Calendar.MONTH);
    pDay = c.get(Calendar.DAY_OF_MONTH);


    setContentView(R.layout.main);

    addListenerOnButton();

}



public void addListenerOnButton() {



    btnChangeDate = (Button) findViewById(R.id.btnChangeDate);
    btnChangeDate.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            showDialog(DATE_DIALOG_ID);
            /*MainActivity.dialogMaps.put(++MainActivity.dialogIdCounter,
                    new DatePickerDialog((Activity) MainActivity.this,
                            mDateSetListener, mYear, mMonth, mDay));*/

            /*((Activity) MainActivity.this)
                    .showDialog(MainActivity.dialogIdCounter);*/

        }
    });

}



@SuppressLint("NewApi")
@Override
protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DATE_DIALOG_ID:
            DatePickerDialog dpDialog = new DatePickerDialog(this, mDateSetListener, pYear, pMonth, pDay);
            DatePicker datePicker = dpDialog.getDatePicker();

            Calendar calendar = Calendar.getInstance();//get the current day
            datePicker.setMaxDate(calendar.getTimeInMillis());//set the current day as the max date
            return dpDialog;
       }

        return null;
}



protected void onPrepareDialog(int id, Dialog dialog) {
        switch (id) {
        case DATE_DIALOG_ID:
                ((DatePickerDialog) dialog).updateDate(pYear, pMonth-1, pDay);
                break;
        }
}   



private void updateDisplay() {
    btnChangeDate = (Button) findViewById(R.id.btnChangeDate);
    btnChangeDate.setText(new StringBuilder().append(pDay).append("/")
            .append(pMonth + 1).append("/").append(pYear));
}


private DatePickerDialog.OnDateSetListener mDateSetListener =
        new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        // TODO Auto-generated method stub
        pYear = year;
        pMonth = monthOfYear;
        pDay = dayOfMonth;
        updateDisplay();
    }
};

showDialog が API レベル 13 で非推奨になっていることを知りました。ダイアログ フラグメントを使用して同じことを達成したいのですが、どのように開始すればよいかわかりません。

4

1 に答える 1

0

どういう理由ですか?

http://developer.android.com/reference/android/app/Activity.html#showDialog(int)

Android DialogFragment とダイアログ

それを解決する方法は?

代わりに FragmentManager で新しい DialogFragment クラスを使用してください。これは、Android 互換性パッケージを通じて古いプラットフォームでも利用できます。

http://android-developers.blogspot.in/2012/05/using-dialogfragments.html

于 2013-09-23T17:54:32.273 に答える