0

現在の日付を示す編集テキストがあります。その edittext をクリックすると、datepicker ダイアログがポップアップします。ただし、ダイアログで日付を設定した後、nullpointer Exception がスローされます。以下にコードを挿入します。showdialogが減価償却されているので、DialogFragmentで試しました。私のコードでどこが間違っていたのか、誰か助けてもらえますか?

    import java.util.Calendar;
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.DatePickerDialog;
    import android.app.Dialog;
    import android.app.DialogFragment;
    import android.view.View;
    import android.widget.DatePicker;
    import android.widget.EditText;

public class setDate extends Activity {
    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.datepicker);

    EditText dateValue = (EditText) findViewById(R.id.date);
    final Calendar c = Calendar.getInstance();
    int yearText = c.get(Calendar.YEAR);
    int monthText = c.get(Calendar.MONTH);
    int dayText = c.get(Calendar.DAY_OF_MONTH);

    dateValue.setText(dayText + "-" + (monthText + 1) + "-" + yearText);

}

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

}

public static class DatePickerFragment extends DialogFragment implements
        DatePickerDialog.OnDateSetListener {

    public Dialog onCreateDialog(Bundle savedInstanceState) {

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

        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    @Override
    public void onDateSet(DatePicker view, int year, int month, int day) {

        String a = String.valueOf(day);
        String b = String.valueOf(month + 1);
        String c = String.valueOf(year);

        View id = new Activity().findViewById(R.id.date);
        EditText dateValue = (EditText) id;
        dateValue.setText(a + "-" + b + "-" + c);

    }

}
}

findViewById は現在のクラスでは定義されていないため、Activity のインスタンスを作成し、findViewById を使用しようとしました。

4

0 に答える 0