在Kotlin中从片段声明意图时出错:

时间:2019-05-07 20:01:42

标签: android android-intent kotlin

我正在尝试创建一个意图,该意图使用主活动中某个片段中的按钮来打开新活动。弹出错误,在“ Intent”对象下面加红线。错误是:

以下任何函数均不能使用提供的参数来调用。 (Context !, Class <*>!)在android.content.Intent中定义 (String !, Uri!)在android.content.Intent

中定义

我尝试了以下代码

val fieldIntent = Intent(this@Fragment1, ProductsAndInputs::class.java )

代替最初的

val fieldIntent = Intent(this, ProductsAndInputs::class.java )

基于在其他论坛上提供的答案,但它也无效


    class Fragment1 : Fragment() {


        override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
            val view: View = inflater!!.inflate(R.layout.fragment_fragment1, container, false)

            view.btn_field.setOnClickListener { view ->
                val fieldIntent = Intent(this@Fragment1, ProductsAndInputs::class.java )
                Log.i("Button clicked", "Field button")
            }
            return view
        }
        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

            super.onViewCreated(view, savedInstanceState)
        }

    }

2 个答案:

答案 0 :(得分:0)

您需要添加此代码 val fieldIntent = Intent(this @ Fragment1,ProductsAndInputs :: class.java)              startActivity(fieldIntent)

答案 1 :(得分:0)

问题在于Intent构造函数需要一个上下文,但是您要向其传递一个Fragment。但是您可以从Fragment获取上下文:尝试以下操作:

 val fieldIntent = Intent(this@Fragment1.context, Products...

哦,就像Ajay所说的,您也确实需要调用startActivity。