我想将数据传递给弹出对话框

时间:2019-04-27 18:16:32

标签: kotlin

在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

2 个答案:

答案 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而不是构造函数