0
私はアプリを開発中で、DialogFragmentを拡張するカスタムダイアログを使用しています。このダイアログには、親アクティビティに渡す特定のフィールドが含まれます。私はOnDismissListenerを実装しようとしましたが、パラメータはDialog Interfaceです。onDismiss()を使用してDialogFragmentから情報を取得する
親アクティビティ:
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
BreakCreator mDialog = new BreakCreator();
mDialog.show(getSupportFragmentManager(), "start break Creator");
}
});
リスナー:
@Override
public void onDismiss(DialogInterface dialog) {
Log.d("debug", "in onDismiss");
BreakCreator mBreakCreator = BreakCreator.class.cast(dialog);// This MIGHT not work
//TODO cast and shit
if(!mBreakCreator.isCancelled()){
int startMinute = mBreakCreator.getStartMinute();
int startHour = mBreakCreator.getStartHour();
int endMinute = mBreakCreator.getEndMinute();
int endHour = mBreakCreator.getEndHour();
String day = mBreakCreator.getDay();
Break mBreak = new Break(new ultramirinc.champs_mood.Time(startHour, startMinute),
new ultramirinc.champs_mood.Time(endHour, endMinute), day);
breakList.add(mBreak);
Log.d("created", "break added");
recyclerView.invalidate();
}else{
Log.d("debug", "is not cancelled");
}
}
ダイアログクラス:
public void onDismiss(final DialogInterface dialog) {
super.onDismiss(dialog);
final Activity activity = getActivity();
if (activity instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) activity).onDismiss(dialog);
}
}
私はDialogFragment –
を読むDialogInterfaceをキャストすることはできませんので、情報を取得する方法を見当もつかない[この](https://en.wikipedia.org/wiki/Observer_pattern)、[この](HTTPS:/ /docs.oracle.com/javase/tutorial/uiswing/events/)と[this](https://www.google.se/url?sa=t&rct=j&q=&esrc=s&source=web&cd=15&cad=rja&uact=8&ved = 0ahUKEwiA7uXDoaLTAhWDjiwKHVnYBRAQFghxMA4&URL =のhttp%3A%2F%2Fwww.vogella.com%2Ftutorials%2FDesignPatternObserver%2Farticle.html&USG = AFQjCNGGgYexZpJrbf-LiedTH0yRc675rQ&SIG2 = OUgdD_VLKZWmUpfUsS_sLA) – rckrd
私はオブジェクトにリスナーを追加するアイデアを得る、まだ私のカスタムDialogFragmentはいないようですメソッドを持つ:setOnDismissListener –