【发布时间】:2017-10-02 07:26:44
【问题描述】:
我的对话框片段就像下面的代码。
public class PromoCodeDialogFragment extends BaseDialog implements View.OnClickListener {
private Test mBinding;
private String mHeader;
private String mVehicleNumber;
public static PromoCodeDialogFragment newInstance(String mHeader, String mVehicleNumber) {
PromoCodeDialogFragment dialog = new PromoCodeDialogFragment();
dialog.mHeader = mHeader;
dialog.mVehicleNumber = mVehicleNumber;
return dialog;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawableResource(android.R.color.transparent);
mBinding = DataBindingUtil.inflate(inflater, R.layout.test, container, false);
mBinding.title.setText(mHeader);
setCancelable(true);
mBinding.submit.setOnClickListener(this);
mBinding.cancel.setOnClickListener(this);
return mBinding.getRoot();
}
@Override
public void onStart() {
super.onStart();
getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.submit:
submit();
break;
case R.id.cancel:
dismiss();
break;
}
}
在这里,如果我按下提交按钮,那么我必须在我的 MainFragment 类中获得结果。
我这样调用DialogFragment
@Override
public void onClick(View view, int position) {
SearchVehicleResponse.PromotionDetail promotionDetail = mPromoList.get(position);
if(hasActivity())
PromoCodeDialogFragment.newInstance(promotionDetail.promotionOffer, mBinding.vehicleId.getText().toString()).show(getActivity().getSupportFragmentManager(), "promo");
}
现在,当我单击 PromoCodeDialogFragment 内的提交按钮时,我需要在 Fragment 中获取响应。
【问题讨论】:
-
使用Interface与Fragments和Dialog进行通信