Android开发 - 使用自定义接口在新窗口中传回数据
-
在Android开发中,有时候我们需要在新打开的窗口中传递数据回来。例如:在新打开的 DialogFragment 窗口传递数据回 MainActivity 启动窗口
-
代码举例
-
首先在 MainActivity 中定义实例化一个 DialogFragment 窗口
// MainActivity.java // 点击按钮打开一个 DialogFragment 窗口 btn.setOnClickListener(v ->{ DialogFragment1 dialogFragment = new DialogFragment1(); // 假定 DialogFragment 窗口类名为DialogFragment1 dialogFragment.show(getFragmentManager(), "dialogFragment"); // 显示 DialogFragment 窗口 });
-
随后在需要打开的 DialogFragment 类中创建接口并回传数据
//DialogFragment1.java // SetOnClickDialogListener 为自定义类,在未创建完成时回持续爆红 private SetOnClickDialogListener clickListener; //定义构造方法,用于在 MainActivity 中接收数据 public void mOnClickListener(SetOnClickDialogListener l){ this.clickListener = l; } //自定义类的接口,里面的 ClickDialogListener 为 DialogFragment 中自定义的使用方法与形参,用于回传数据 public interface SetOnClickDialogListener{ //这里假定需要回传一个字符串与一个整数 void ClickDialogListener(String str, int num); } //点击按钮回传数据 btn.setOnClickListener(v -> { clickListener.ClickDialogListener("hallow, world!", 1); //回传数据 this.dismiss();//关闭窗口 });
-
MainActivity 中接收数据
// MainActivity.java btn.setOnClickListener(v ->{ DialogFragment1 dialogFragment = new DialogFragment1(); // 假定 DialogFragment 窗口类名为DialogFragment1 dialogFragment.show(getFragmentManager(), "dialogFragment"); // 显示 DialogFragment 窗口 //使用 DialogFragment 类中自定义的构造方法进行接收数据 dialogFragment.mOnClickListener((str, num) -> { //充分利用所接收到的数据 if (num == 1) { btn.setText(str) } }); });
-
-
如此这般即可实现数据回传,如果是在 MainActivity 中传递数据到 DialogFragment 中,不建议使用此方法,建议使用 Bundle 类 进行传递