提问者:小点点

Android-从底层片断开始意图


我目前正在做一个应用程序,有一个底页作为菜单。 此菜单的目标是根据所选项目启动意图。 我试着开始了如下的意图,然而Android Studio说:

不能使用提供的参数调用下列任何函数。

>

  • (上下文!,类<*>!) 在android.content.intent中定义

    (字符串!,URI!) 在android.content.intent中定义

    我做错了什么? 有没有更好的方法从类开始一个意图?

    FRGBottomSheetDrawer.kt

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
            super.onCreateView(inflater, container, savedInstanceState)
    
            navDrawer.setNavigationItemSelectedListener { menuItem ->
                when (menuItem!!.itemId) {
                    R.id.ndListFolder -> Intent(this, ndActFolder::class.java).also {
                        startActivity(it) 
                    }
                    R.id.ndListSettings -> Intent(this, ndActSettings::class.java).also {
                        startActivity(it) 
                    }
                    true
                }
            }
    
            return inflater.inflate(R.layout.fragment_bottomsheet, container, false)
        }
    

  • 共1个答案

    匿名用户

    通过创建自定义侦听器,可以从activity中侦听底部表中的事件。 你可以这样做:

    在您的底页中:

    var mListener: BottomSheetListener? = null
    
    interface BottomSheetListener{
        fun onEventHappened(foo: Foo)
    }
    
    // Attach activity to your listener
    override fun onAttach(context: Context) {
        super.onAttach(context)
        mListener = context as BottomSheetListener
    }
    

    在你的activity中:

    class MainActivity : AppCompatActivity(), BottomSheet.BottomSheetListener
    

    它将希望您重写OnEventAppened方法。

    当您想要从您的底表中进行nagivate时,请在您的底表类中运行mlistener.oneventappened(foo)行。 它将触发activity中的OnEventAppened()方法。 然后,您可以根据您的activity上下文启动intents。