gpt4 book ai didi

android - 如何在 Kotlin 中设置非内联 OnClickListener?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:07 24 4
gpt4 key购买 nike

我想将 View.OnClickListener 附加到 Button。我不希望 OnClickListener 成为内联匿名函数定义。相反,我想在 onCreateView() 函数的范围之外定义它。

在 Java 中,我会这样做:

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.my_layout, container, false);
View my_btn = view.findViewById(R.id.my_btn);
my_btn.setOnClickListener(handleButtonClick);
return view;
}

View.OnClickListener handleButtonClick = new View.OnClickListener()
{
@Override public void onClick(View v)
{
Log.d("my_tag", "click!")
}
}

其他答案似乎表明以下内容可行,但它不适合我:

    override fun onCreateView(name: String?, context: Context?, attrs: AttributeSet?): View
{
var view = super.onCreateView(name, context, attrs)
my_btn.setOnClickListener( handleButtonClick )
return view
}

private val handleButtonClick = View.OnClickListener
{
view->
Log.d("my_tag", "click!")
}

以上有什么问题,我如何将 OnClickListener 定义为我的 Activity 类上的命名属性?

最佳答案

正确缩进解决了这个问题。

private val handleButtonClick = View.OnClickListener {  view->
Log.d("my_tag", "click!")
}

正如其他人所提到的,由于 view 参数是单个参数并且被忽略了,因此您可以去掉它。

如果你想使用一个对象:

val handleButtonClick = object : View.OnClickListener {
override fun onClick(view: View) {
Log.d("my_tag", "click!")
}
}

编辑:如@Mango所述, 这是 grammar definition 中规定的限制.

关于android - 如何在 Kotlin 中设置非内联 OnClickListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48245355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com