0
我正在開發一個應用程序,並使用擴展DialogFragment的自定義對話框。該對話框將包含我想要傳遞給父活動的特定字段。我嘗試實現OnDismissListener,但參數是一個Dialog接口。使用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);
}
}
我不知道如何獲得信息,因爲我不能投DialogInterface到DialogFragment –
閱讀[這](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 –