2013-09-23 2 views
0

Я использовал Show Dialog для создания Date Picker в Android, я успешно смог это сделать. Я хочу выбор даты, чтобы появиться на ButtonClick но сделано через ShowDialog который является устаревшим, я использовал ..Android alternate for supressed show Dilaog

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 устарели для уровня апите 13 Я хочу, чтобы достичь того же через диалоговое Fragment но не понимая, с чего начать, любая помощь будет очень признательна

ответ

0

В чем причина?

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

Android DialogFragment против Dialog

Как решить эту проблему?

Вместо этого используйте новый класс DialogFragment с FragmentManager; это также доступно на старых платформах через пакет совместимости с Android.

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