これは、DialogFragment と DatePicker を示す Android チュートリアルの小さな例です。MainActivity の静的内部クラスとして実装されます。代わりに MainActivity のメンバー関数になるようにコードを変更することは可能でしょうか?
編集: DialogFragment が存在するこの内部クラスから MainActivity に textview を設定したいということです。しかし、この内部クラスは静的です。実際、静的でなければなりません。Aそして静的であるため、メイン アクティビティに対して行われるコールバック (コールバック関数) も静的である必要があります。しかし、この関数が静的である場合、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;
}