AndroidBottomSheetDialogFragment数据更改会影响父Fragment中的数据
创始人
2024-10-06 12:30:59
0

通过使用接口将BottomSheetDialogFragment和其父Fragment解耦,以确保数据更改不会影响父Fragment中的数据。

首先,在BottomSheetDialogFragment中创建一个接口:

public interface BottomSheetListener {
    void onDataChanged(String data);
}

然后在BottomSheetDialogFragment中将接口与数据绑定:

public class MyBottomSheet extends BottomSheetDialogFragment {

    private BottomSheetListener mListener;
    private EditText mEditTextData;

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);

        try {
            mListener = (BottomSheetListener) context;
        } catch (ClassCastException e) {
            throw new ClassCastException(context.toString()
                    + " must implement BottomSheetListener");
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.bottom_sheet, container,
                false);

        mEditTextData = view.findViewById(R.id.edit_text_data);
        Button buttonOk = view.findViewById(R.id.button_ok);

        buttonOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String data = mEditTextData.getText().toString();
                mListener.onDataChanged(data);
                dismiss();
            }
        });

        return view;
    }
}

最后,在父Fragment中实现接口以获取BottomSheetDialogFragment中的更改数据:

public class MyFragment extends Fragment implements BottomSheetListener {

    private TextView mTextViewData;
    private String mText = "";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment, container,
                false);

        mTextViewData = view.findViewById(R.id.text_view_data);

        Button buttonShowDialog = view.findViewById(R.id.button_show_dialog);
        buttonShowDialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MyBottomSheet bottomSheet = new MyBottomSheet();
                bottomSheet.show(getFragmentManager(), "BottomSheet");
            }
        });

        return view;
    }

    @Override
    public void onDataChanged(String data) {
        mText =

相关内容

热门资讯

德州ai辅助!aapoker插... 德州ai辅助!aapoker插件(透视)从来真的是有挂(详细辅助解密教程)是一款可以让一直输的玩家,...
wepoke有没有挂!wepo... 您好,wepoke有没有挂这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩...
wepoke模拟器!德扑之星内... wepoke模拟器!德扑之星内部(透视)真是是有挂(详细辅助曝光教程)1、许多玩家不知道wepoke...
微扑克辅助软件!wpk辅助nz... 微扑克辅助软件!wpk辅助nzt(透视)好像是真的有挂(详细辅助详细教程)1)微扑克辅助软件辅助挂:...
aapoker辅助工具!轰趴十... aapoker辅助工具!轰趴十三水有后台吗(透视)切实真的是有挂(详细辅助新版2025教程)是一款可...
微扑克有辅助挂!德扑ai自定义... 微扑克有辅助挂!德扑ai自定义设置数据(透视)其实真的有挂(详细辅助解密教程)是一款可以让一直输的玩...
德州之星有辅助挂!扑克世界牌局... 德州之星有辅助挂!扑克世界牌局设置(透视)一直存在有挂(详细辅助曝光教程)是一款可以让一直输的玩家,...
wpk德州透视辅助!aa po... wpk德州透视辅助!aa poker辅助软件(透视)一贯存在有挂(详细辅助透明教程);小薇(透视辅助...
aapoker透明挂!鱼扑克f... 自定义aapoker透明挂系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,...
wpk有透视辅助!德州ai辅助... wpk有透视辅助!德州ai辅助工具购买(透视)原先真的有挂(详细辅助存在挂教程)1、wpk有透视辅助...