我想将 a 附加View.OnClickListener到 a 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!")
}
}
Run Code Online (Sandbox Code Playgroud)
其他答案似乎表明以下内容可行,但它不适合我:
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!")
}
Run Code Online (Sandbox Code Playgroud)
上面有什么问题,我如何OnClickListener在我的Activity类中将一个定义为命名属性?
正确缩进可以解决问题。
private val handleButtonClick = View.OnClickListener { view->
Log.d("my_tag", "click!")
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所提到的,由于viewparam 是唯一的并且被忽略,因此您可以摆脱它。
如果你想使用一个对象:
val handleButtonClick = object : View.OnClickListener {
override fun onClick(view: View) {
Log.d("my_tag", "click!")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2736 次 |
| 最近记录: |