class MoreFragment : Fragment() {
internal var callback: OnMoreItemClickedListener
fun setOnMoreItemClickedListener(callback: OnMoreItemClickedListener) {
this.callback = callback
}
interface OnMoreItemClickedListener {
fun onAddClothClicked()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_more, container, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
}
override fun onStart() {
super.onStart()
btn_add_clothes.setOnClickListener {
callback.onAddClothClicked()
}
}
}
class MainActivity : AppCompatActivity(), MoreFragment.OnMoreItemClickedListener {
override fun onAddClothClicked() {
Log.d("MainActivity", "HERE")
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navView: BottomNavigationView = findViewById(R.id.nav_view)
val navController = findNavController(R.id.nav_host_fragment)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
val appBarConfiguration = AppBarConfiguration(
setOf(
R.id.navigation_clothes,
R.id.navigation_seasons,
R.id.navigation_notifications,
R.id.navigation_more
)
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
}
override fun onAttachFragment(fragment: Fragment) {
super.onAttachFragment(fragment)
if(fragment is MoreFragment){
fragment.setOnMoreItemClickedListener(this)
}
}
}
MoreFragment.kt: (16, 5): Property must be initialized or be abstract
我尝试过的事情
回调变量:onmoreItemClickedListener
放一个lateInit var
,但没有成功。因为它永远不会被初始化。内部var回调:onmoreItemClickedListener?=null
并使用null safe运算符引用了回调
?。
但无法获取click事件。我是相当新的Kotlin和碎片太,所以请帮助我如何做到这一点。谢谢
在片段重写onAttach方法中
private lateinit var callback: OnMoreItemClickedListener
override onAttach(context : Context){
callback = context as OnMoreItemClickedListener
}
然后您的回调将是init。因为onAttach将是第一个。因此,没有属性必须初始化,否则将发生抽象错误。
同样,在活动中,实现您的接口(OnMoreItemClickedListener)并重写它的方法。你会得到回拨
问题内容: 我有一个外部面板,在外部面板上有另一个jPanel。 如果我在内部面板上单击鼠标右键,则应该执行外部面板的右键单击操作。如果我确实在内部面板上单击鼠标左键,则应该发生其自身内部面板的点击动作。 是否可以将点击事件从一个面板传递到另一面板? 问题答案: 要解决此问题,您需要解决许多问题。 首先是要了解鼠标事件与创建它的组件有关,尤其是位置信息。单击点是相对于源组件x / y位置的偏移量(
当我关闭一个活动时,我希望它将一个值传递给另一个活动中的一个片段,我该怎么做? 活动B 片段A 代码不起作用,因为它给了我一个错误 谢啦
问题内容: 在我的RCP应用程序中,左侧有一个用于导航的视图,右侧有一个用于视图的文件夹。透视图看起来像这样: 我想根据用户在导航树中选择的内容打开不同的视图。认为这并不难。我的导航树视图: 这似乎很好。仅有一个小问题:我需要以某种方式将对象(例如,selectedItem)传递给我的视图,以使用户与其内容进行交互。我怎么做? 我看到了一些示例,其中一些同事编写了自己的视图,并将其放置在右侧。然后
问题内容: 我想创建一个应用程序,其中应处理某些事件,就像它们被传递到父容器一样。例如,我有一个包含的。顶部立即实现了鼠标按下和拖动。为了使事件看起来像是到达的,而不是标签本身,我需要做什么。(更改源对象很重要) 是否有比实际实现事件并在父级中复制事件更好的解决方案?(在某些对象> 5个孩子之后,这将变得乏味)。 问题答案: 在事件侦听器中,您可以将事件调度到父组件。 作为事件处理函数参数: 但是
自己写的一个在不同搜索引擎间快速跳转的脚本,image的click事件无效。 把function单独粘贴到控制台运行是正常的,但是全部粘贴到控制台后图片的点击事件就没有生效,也没报错。。。询问chatgpt也没给出有效方案。