简体   繁体   English

如何从Fragment.kt文件中调用活动?

[英]How can I call an Activity from Fragment.kt file?

class ProfileFragment : Fragment() {
    private lateinit var tvhelpcenter: TextView
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        return inflater.inflate(R.layout.fragment_profile, container, false)
        /*  val view = inflater?.inflate(
              R.layout.fragment_home,
              container, false
          )*/
        /*val tv_help_center: TextView? = view?.findViewById(R.id.tv_help_center)
        tv_help_center!!.setOnClickListener {
            requireActivity().run {
                startActivity(Intent(this, HelpCenterActivity::class.java))
                finish()
            }
        }*/
    }
}

You should use activity!! 您应该使用activity!! instead of this here. 而不是这个在这里。

For Fragment use -> activity!! 对于片段使用-> 活动!

 activity!!.startActivity(Intent(activity!!, HelpCenterActivity::class.java))
 finish()

2nd Approach 第二种方法

   (activity as MainActivityName)?.let{
       val intent = Intent (it, HelpCenterActivity::class.java)
       it.startActivity(intent)
       finish()
    }

let ->takes the object it is invoked upon as the parameter and returns the result of the lambda expression. let >将调用它的对象作为参数,并返回lambda表达式的结果。

it ->keyword contains the copy of the property inside let . it > keyword包含let内属性的副本。

  1. Call the parent Activity: 调用父活动:

    val intent = Intent (getActivity(), Main::class.java) getActivity().startActivity(intent) val intent = Intent(getActivity(),Main :: class.java)getActivity()。startActivity(intent)

    1. or do like this 或这样做

    activity?.let{ val intent = Intent (it, Main::class.java) it.startActivity(intent) } activity?.let {val intent = Intent(it,Main :: class.java)it.startActivity(intent)}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM