首页 > 解决方案 > 从另一个类将文本设置为 DialogFragment

问题描述

我需要实现扩展 DialogFragment 的 ProgressDialogFragment。在显示之前,我应该将文本设置为对话框片段。这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ProgressBar
        android:id="@+id/pb_loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginBottom="16dp"
        android:progressDrawable="@drawable/progressbar"
        android:theme="@style/ProgressBar" />

    <com.google.android.material.textview.MaterialTextView
        android:id="@+id/tv_message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:layout_toEndOf="@id/pb_loading"
        tools:text="Loading text" />

</RelativeLayout>

这是我的课程 ProgressDialogFragment:

class ProgressDialogFragment : DialogFragment() {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.progress_dialog_fragment, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        tv_message?.text = requireArguments().getString("message", "")
    }

    companion object {
        fun newInstance(message: String) = ProgressDialogFragment().apply {
            arguments = bundleOf(Pair("message", message))
        }
    }

}

因此,如您所见,现在我每次应该显示对话框时都创建一个新实例。但是有没有办法将消息设置为已经存在的对象?我尝试添加将消息设置为 textview 的方法 setMessage 并且在这种情况下不使用新实例,但我发现了一个异常,即消息的 textview 未初始化。那么,有什么方法可以解决我的问题吗?

标签: android

解决方案


推荐阅读