ボタンを設定するための有効なテキストが editText4 に含まれていても、これを dateonset () メソッド内で行うことにより、この button.set() を複数の方法で試しました。edittext4が空であると思われるため、共有設定のルートを試しました。最後に、このメソッドを試して、ビューから Onclick メソッド内の Datebtn を初期化しました。ここではヌル ポインター例外は発生しませんが、スイッチ ケース内の Datebtn.setText() は、選択された日付値を settext しません & Datebtn テキストは、onCreateView () メソッドで設定された現在の日付のみを表示し続けます。些細なことを見逃していると思います。
public class AFragment extends Fragment implements OnClickListener {
private DataManipulator dh;
public Button Datebtn;
private Calendar mCalen;
private int day;
private int month;
private int year;
public String myEditText4;
@Override
public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) {
View view = inflater.inflate( R.layout.afragment, container, false );
Button b1 = (Button)view.findViewById( R.id.Button01 );
b1.setOnClickListener( this );
Button Datebtn = (Button)view.findViewById( R.id.datepickerbutton );
mCalen = Calendar.getInstance();
day = mCalen.get( Calendar.DAY_OF_MONTH );
month = mCalen.get( Calendar.MONTH );
year = mCalen.get( Calendar.YEAR );
Datebtn.setText( day + " / " + (month + 1) + " / " + year );
myEditText4 = (String)Datebtn.getText();
Datebtn.setOnClickListener( this );
return view;
}
@SuppressLint( "CutPasteId" )
@Override
public void onClick( View view ) {
Context context = view.getContext();
Button Datebtn = (Button)view.findViewById( R.id.datepickerbutton );
switch( view.getId() ) {
case (R.id.datepickerbutton):
DatePickerFragment newDateFragment = new DatePickerFragment();
newDateFragment.setStyle( 1, 1 );
newDateFragment.show( getFragmentManager(), "DatePicker" );
Datebtn.setText( myEditText4 );
break;
case (R.id.Button01):
View editText1 = (EditText)getView().findViewById( R.id.ppl );
View editText2 = (EditText)getView().findViewById( R.id.litres );
View editText3 = (EditText)getView().findViewById( R.id.odo );
String myEditText1 = ((TextView)editText1).getText().toString();
String myEditText2 = ((TextView)editText2).getText().toString();
String myEditText3 = ((TextView)editText3).getText().toString();
dh = new DataManipulator( context );
if( myEditText1 != "" & myEditText2 != "" & myEditText3 != "" & myEditText4 != "" ) {
dh.insert( myEditText1, myEditText2, myEditText3, myEditText4 );
Toast.makeText( context.getApplicationContext(), "Submit Successful!!!", Toast.LENGTH_LONG ).show();
EditText text1 = (EditText)getView().findViewById( R.id.ppl );
text1.setText( "" );
EditText text2 = (EditText)getView().findViewById( R.id.litres );
text2.setText( "" );
EditText text3 = (EditText)getView().findViewById( R.id.odo );
text3.setText( "" );
} else {
Toast.makeText( context.getApplicationContext(), "Values can not be empty!!!", Toast.LENGTH_LONG ).show();
}
break;
}
}
@SuppressLint( "ValidFragment" )
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
@Override
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 );
}
public void onDateSet( DatePicker view, int selectedYear, int selectedMonth, int selectedDay ) {
int year = selectedYear;
int month = selectedMonth;
int day = selectedDay;
myEditText4 = (day + " / " + (month + 1) + " / " + year);
return;
}
}
}