0

Привет, я новичок в разработке Android. У меня проблема. У меня есть фрагмент. в представлении Фрагмент я получил кнопку изображения для datepicker. при запуске кода ошибки не было обнаружено. но диалоговое окно выбора даты не отображается, когда я нажимаю кнопку изображения.DatePicker Внутри фрагмента

Любой, пожалуйста, помогите мне в этом.

вот код:

public class Payment05TowMachineEntryFragment extends Fragment { 

    public static MainActivity lastCreated; 

    private TextView DateDisplay; 
    private ImageButton PickDate; 
    private Calendar Date; 

    static final int DATE_DIALOG_ID = 999; 

    private TextView activeDateDisplay; 
    private Calendar activeDate; 

    public Payment05TowMachineEntryFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.payment05_towmachine_entry_fragment, container, false); 

     return rootView; 
    } 

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

     DateDisplay = (TextView) (getView().findViewById(R.id.selectDate)); 
     PickDate = (ImageButton) (getView().findViewById(R.id.btncalender)); 

     /* get the current date */ 
     Date = Calendar.getInstance(); 

     /* add a click listener to the button */ 
     PickDate.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       showDateDialog(DateDisplay, Date); 
      } 
     }); 

     /* display the current date (this method is below) */ 
     updateDisplay(DateDisplay, Date); 

    } 

    private DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() { 
     @Override 
     public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      activeDate.set(Calendar.YEAR, year); 
      activeDate.set(Calendar.MONTH, monthOfYear); 
      activeDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
      updateDisplay(activeDateDisplay, activeDate); 
      //unregisterDateDisplay(); 
     } 
    }; 

    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
      case DATE_DIALOG_ID: 
       return new DatePickerDialog(getActivity(), dateSetListener, activeDate.get(Calendar.YEAR), activeDate.get(Calendar.MONTH), activeDate.get(Calendar.DAY_OF_MONTH)); 
     } 
     return null; 
    } 


    protected void onPrepareDialog(int id, Dialog dialog) { 
     switch (id) { 
      case DATE_DIALOG_ID: 
       ((DatePickerDialog) dialog).updateDate(activeDate.get(Calendar.YEAR), activeDate.get(Calendar.MONTH), activeDate.get(Calendar.DAY_OF_MONTH)); 
       break; 
     } 
    } 

    private void showDateDialog(TextView dateDisplay, Calendar date) { 
     activeDateDisplay = dateDisplay; 
     activeDate = date; 
     showDialog(DATE_DIALOG_ID); 
    } 

    private void showDialog(int dateDialogId) { 


    } 

    private void updateDisplay(TextView dateDisplay, Calendar date) { 
     DateDisplay.setText(
       new StringBuilder() 
         .append(date.get(Calendar.DAY_OF_MONTH)).append("-") 
         .append(date.get(Calendar.MONTH) + 1).append("-") 
         .append(date.get(Calendar.YEAR)).append(" ")); 
    } 

} 

ответ

0

попробовать, как эта надежда работы

private void displayDate() { 

    Calendar mCalendar = Calendar.getInstance(); 
    new DatePickerDialog(getActivity(), (OnDateSetListener) new OnDateSetListener() { 

    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
    int dayOfMonth) { 
    // TODO Auto-generated method stub 
     PickDate.append(monthOfYear + 1).append("-").append(
      .append("-").append(year)); 

    } 
    }, mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), 
    mCalendar.get(Calendar.DATE)); 
    } 
0

В кнопке нажмите вызвать DateFragment как этот

yourButton.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     DialogFragment newFragment = new DateFragment(); 
     newFragment.show(getFragmentManager(), "DatePicker"); 

    } 
}); 

для DateFragment

public class DateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
    final Calendar calendar = Calendar.getInstance(); 
    int yy = calendar.get(Calendar.YEAR); 
    int mm = calendar.get(Calendar.MONTH); 
    int dd = calendar.get(Calendar.DAY_OF_MONTH); 
    return new DatePickerDialog(getActivity(), this, yy, mm, dd); 
    } 

    public void onDateSet(DatePicker view, int yy, int mm, int dd) { 
     populateSetDate(yy, mm+1, dd); 
    } 
    public void populateSetDate(int year, int month, int day) { 
     dob.setText(month+"/"+day+"/"+year); 
     } 

} 
+0

Привет @gargs, почему у меня ошибка на "show (getFragmentManager(), .."? –

Смежные вопросы