android - 从 BottomSheet 片段开始意图
android - Start intent from a BottomSheet fragment
我目前正在开发一个应用程序,它有一个 BottomSheet 作为菜单。这个菜单的objective是根据选择的项目启动intents。我尝试启动如下所示的 Intent,但是 Android Studio 说:
None 以下函数可以使用提供的参数调用。
(上下文!, Class<*>!) 定义在android.content.Intent
(String!, Uri!) 定义在android.content.Intent
我做错了什么?有没有更好的方法从 class 开始 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 中侦听底部 sheet 中的事件。你可以这样做:
在您的底页中:
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
它会要求您覆盖 onEventHappened
方法。
当您想从 BottomSheet class 中的 sheet、运行 mListener.onEventHappened(foo)
行开始导航时。它将触发 Activity 中的 onEventHappened()
方法。然后,您可以根据 activity 上下文启动意图。
我找到了一个干净的解决方案。
我们可以写一个更简洁的 Intent 行:
this.startActivity(Intent(activity, actAbout::class.java))
如果你通常需要activity,我们可以这样写:
new intent = Intent(activity, actAbout::class.java))
startActivity(intent)
我目前正在开发一个应用程序,它有一个 BottomSheet 作为菜单。这个菜单的objective是根据选择的项目启动intents。我尝试启动如下所示的 Intent,但是 Android Studio 说:
None 以下函数可以使用提供的参数调用。
(上下文!, Class<*>!) 定义在android.content.Intent
(String!, Uri!) 定义在android.content.Intent
我做错了什么?有没有更好的方法从 class 开始 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 中侦听底部 sheet 中的事件。你可以这样做:
在您的底页中:
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
它会要求您覆盖 onEventHappened
方法。
当您想从 BottomSheet class 中的 sheet、运行 mListener.onEventHappened(foo)
行开始导航时。它将触发 Activity 中的 onEventHappened()
方法。然后,您可以根据 activity 上下文启动意图。
我找到了一个干净的解决方案。
我们可以写一个更简洁的 Intent 行:
this.startActivity(Intent(activity, actAbout::class.java))
如果你通常需要activity,我们可以这样写:
new intent = Intent(activity, actAbout::class.java))
startActivity(intent)