現在の日付を示す編集テキストがあります。その 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 を使用しようとしました。