在kotlin中...我想将数据传递到扩展了dialogFragment的自定义弹出窗口,所以这里的任何人都知道如何将数据传递给这样的片段? 每次将数据传递给构造函数时,我都会出错。 请帮忙。
将数据传递给构造函数
class PopUpClass : DialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
var v = inflater.inflate(R.layout.poplayout,container,false
return v
}
//tried to pass the data in the constructor and then handle it but did not work
答案 0 :(得分:2)
看看dialog fragment documentation。
您需要创建一个getInstance函数,该函数将参数通过包传递给片段。像这样:
static MyDialogFragment newInstance(int num) {
MyDialogFragment f = new MyDialogFragment(); // Supply num input as an argument.
Bundle args = new Bundle();
args.putInt("num", num);
f.setArguments(args);
return f;
}
答案 1 :(得分:1)
您可以在Kotlin中做到这一点,首先用片段类的实例声明一个伴随对象
companion object {
@JvmStatic //This can be avoided if you are in a complete Kotlin project
fun newInstance(content: String): PopUpClass {
val args = Bundle()
args.putString("content", content)
val fragment = PopUpClass()
fragment.arguments = args
return fragment
}
}
在片段的onCreate()或onViewCreated()中,您可以接收到这样的数据
val dataPassed: String? = arguments?.getString("content")
从父活动或片段中调用newInstance而不是构造函数