2

DatePickerフラグメントをプルアップするボタンがありますが、選択した日付に応じてビューを変更する方法がわかりません。フラグメントを呼び出すアクティビティであるonDateSetメソッドを、このメソッド内のビューを変更する目的で配置しましたが、日付が変更されても何も行われず、何が間違っているのかわかりません。

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

    @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 monthOfYear,
            int dayOfMonth) {
        // TODO Auto-generated method stub
    }

私のMainScreen.javaは

public class MainScreen extends FragmentActivity implements DatePickerDialog.OnDateSetListener {

    static final int DATE_DIALOG_ID = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_screen);
    }

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

    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {

        Intent intent = new Intent(this, January_1.class);
        startActivity(intent);
    }
}
4

1 に答える 1

1

onDateSet()DatePickerFragement でリスナーを使用する必要があります。

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

    @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 monthOfYear, int dayOfMonth) {
        Activity activity = getActivity();
        Intent intent = new Intent(activity, January_1.class);
        activity.startActivity(intent);
    }
}

コメントから追加

ドキュメントmonthOfYearのに間違ったインデックスを使用しています:

monthOfYear Calendar との互換性のために設定された月 (0-11) 。

したがって、1 月は0、2 月は1などです。
混乱を避けるために、Calendar クラスの月名と switch ステートメントを使用することをお勧めします。

Intent intent;
switch(monthOfYear) {
case Calendar.JANUARY:
    intent = new Intent(activity, January_1.class);
    break;
case Calendar.FEBRUARY:
    // etc...
}
activity.startActivity(intent);
于 2012-10-17T20:34:25.193 に答える