我目前正在做一个应用程序,有一个底页作为菜单。 此菜单的目标是根据所选项目启动意图。 我试着开始了如下的意图,然而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)
}
通过创建自定义侦听器,可以从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。