DialogFragment - сделать его членом внешнего класса вместо статического внутреннего класса.

Это небольшой пример из учебника по Android, показывающий DialogFragment и DatePicker. Он реализован как статический внутренний класс MainActivity. Интересно, возможно ли изменить код, чтобы он стал функцией-членом MainActivity?

РЕДАКТИРОВАТЬ: дело в том, что я хочу установить текстовое представление в MainActivity из этого внутреннего класса, где находится DialogFragment. Но этот внутренний класс статичен - на самом деле ДОЛЖЕН быть статичным. ANd, поскольку он статический, обратный вызов, который выполняется для основного Activity - функции обратного вызова - также должен быть статическим. Но если эта функция статическая - как я могу получить доступ к просмотру текста в MainActivity?

Спасибо!

TextView tv;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    tv = (TextView) findViewById(R.id.dateTextView);

 }


 public void showTimePickerDialog(View v) {
      newFragment = new DatePickerFragment();
      newFragment.show(getSupportFragmentManager(), "datePicker"); 
 }

 public static void notifyActivity() {
    // want to change the textview here but cannot since the method is static.
 }



 public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {

    private int year, month, day;

    @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);


        DatePickerDialog date = new DatePickerDialog(getActivity(), DatePickerFragment.this, year, month, day);
        date.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        notifyActivity(); 
                    }
                });
        return date;

    }

0 ответов

Другие вопросы по тегам