java - 如何在显示时将数据传递给 Dialog Fragment

标签 java android android-dialogfragment

事实上,当您需要将参数传递给自定义对话框 fragment 时,您会在实际使用它们之前将其打包。

示例:

class MyDFrag extends DialogFragment{

      //Empty Construct
      public MyDFrag(){}

      public static MyDFrag newInstance(){

          MyDFrag fragment = new MyDFrag();
          args = new Bundle();
          fragment.setArgument(args);

      }

}

这对大多数路径都非常有效,但前提是您在实际显示对话框 fragment 之前传递此参数。

我的问题是我的对话框中有一个 TextView ,当对话框当前显示时其父 Activity 发生某些事情时我想更改它的值。

在显示对话框后传递参数不会影响此更改。

在我的 onCreate 中:

public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    textbox = (TextView) view.findViewById(R.id.textish);

    if(args.containsKey("status")){
        textbox.setText(getArguments().getString("status"));
    }

}

在对话框类中,我有一个公共(public)对话框,它设置了 TextView 的值,然后我在某个时候在我的主要 Activity 中调用它。

public void setStatus(String value){
    args.putString("status", value);
}

所以当我准备好我的主要 Activity 时,我调用

dialog.setStatus("ok");

只有当我在显示对话框之前而不是在显示对话框时运行代码时才有效。有办法实现吗?

感谢建议,谢谢

最佳答案

我相信有几种方法可以做到这一点。 基本上,正如我所见,您想要的是能够向对话框异步发送消息,告知某些内容已更改并且 UI 需要更新。 我建议考虑使用 LocalBroadcastManager :https://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html

它的使用非常简单 - 设置它的代码不多。你可以找到很多 如何使用它们的示例。 然后我会在创建或显示对话框时在对话框中设置一个接收器。 在您的父 Activity 中,当您需要将更改通知对话框时,您将触发一条包含数据的消息。

关于java - 如何在显示时将数据传递给 Dialog Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42388683/

相关文章:

android - 同步服务运行后刷新 FragmentActivity 中的 fragment

android - 如何从Android中的FCM数据消息中获取值(value)?

具有自定义 View 的 Android AlertDialog : get input data

Android在 fragment 和对话框 fragment 之间共享ViewModel?

java - 使用jaxb在java中创建xml文件

java - jackson 资源访问异常 : I/O error: Unrecognized field

android - 通过单击链接将主页图标添加到移动设备

java - Android:IllegalStateException 调用 DialogFragment

java - MVC 模式中自动调用重复值和一些方法

java - 如何在 map 中获取重复的键