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 类 进行传递

posted @ 2024-08-17 15:38  阿俊学JAVA  阅读(22)  评论(0编辑  收藏  举报