J'essaie d'écouter ou de transmettre des données d'un BotomSheetDialogFragment à Fragment pour changer quelque chose sur le Fragment (Tout comme un sélecteur).transmettre ou écouter des données de BottomSheetDialogFragment à Fragment
J'ai essayé avec getTargetFragment instancier l'auditeur, mais obtenir une erreur du compilateur Fonder: « MyFragment », nécessaire: « android.support.v4.app.Fragment » .. moins
Toutes les idées ou i » m prendre la mauvaise approche?
public class MyBottomSheetDialogFragment extends BottomSheetDialogFragment implements View.OnClickListener {
ReportType reportType;
public interface OnChooseReasonListener {
void onChooseReason(ReportType reportType);
}
OnChooseReasonListener listener;
@Override
public void setupDialog(Dialog dialog, int style) {
super.setupDialog(dialog, style);
View contentView = View.inflate(getContext(), R.layout.picker_bottom_sheet_, null);
dialog.setContentView(contentView);
CoordinatorLayout.LayoutParams layoutParams =
(CoordinatorLayout.LayoutParams) ((View) contentView.getParent()).getLayoutParams();
CoordinatorLayout.Behavior behavior = layoutParams.getBehavior();
//get null here!!!:
listener = (OnChooseReasonListener) getParentFragment();// or with getTargetFragment();
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.cool_button:
this.reportType = ReportType.ME;
//trying to execute the lisstener on null
listener.onChooseReason(this.reportType);
dismiss();
break;
}
}}
Et le fragment:
public class MyFragment extends Fragment
implements View.OnClickListener,
MyBottomSheetDialogFragment.OnChooseReasonListener {
//....code here
public void showPicker() {
//getting and compiler error Wrong 1st argument type.
// picker. setTargetFragment(MyFragment.this , 300);
picker.show(fm, picker.getTag());
}
@Override
public void onChooseReason(ReportType reportType) {
//not getting here
Log(TAG, "You choose something" + reportType.getValue());
}
}
Merci, vous avez raison. J'ai besoin de beaucoup d'expérience et d'études pour aller mieux. Et merci de m'aider à voir la réponse. Il me manque aussi de poster le code pour instancier la BottomSheet. Voici comment j'ai résolu cela à partir du fragment: 'public void showPicker() { MyBottomSheetDialogFragment bottomsheetPicker = new MyBottomSheetDialogFragment(); bottomsheetPicker.setOnChooseReasonListener (this); bottomsheetPicker.show (fm, MyBottomSheetDialogFragment.getTag()); } ' – Xaren