android - 从另一个类将文本设置为 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 未初始化。那么,有什么方法可以解决我的问题吗?
解决方案
推荐阅读
- java - 获取 mbeans 属性值树
- c# - 键盘打开时 UINavigationBar 被推出屏幕(UITextView)
- angular - 在 Angular 中使用 JIT 编译而不是使用 AOT 有什么好处吗?
- radgrid - How to set CommandItem to true again after printing data in radGrid Telerik UI for Asp.Net AJAX?
- java - Minecraft forge automatically sets _JAVA_OPTIONS environment variable
- kubernetes - kube-dns: resolve
success, resolve . failed - python - Lightgbm 提前停止无法正常工作
- jenkins - Jenkins Email Notification to Build-Requestor (URL-Trigger)
- ios - Building static library using Xcode 11. Get “error: Unable to find a suitable library in the XCFramework"
- c# - FirefoxWebdriver 没有数据可用于编码 437