kotlin 的事件监听(Fragment 和 Activity 不同)

前言

Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。
Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。
JetBrains,作为目前广受欢迎的Java IDE IntelliJ 的提供商,在 Apache 许可下已经开源其Kotlin 编程语言。
Kotlin已正式成为Android官方支持开发语言。

事件监听的坑

java 需要关心 到对应的控件上才可以设置监听

 Button btn =  (Button) findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

但是 使用kotlin 就不用那么麻烦了 ,直接找到控件的id 直接设置 监听 ,当然在 Activity 中很简单

 btn.setOnClickListener(View.OnClickListener {

    })
    }

就那么简单 。

下面最重要的来了,
当我们习惯使用 java  来写 Fragment 中的 事件监听的时候 ,这就坑大了

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(getViewId(), null);
bind = ButterKnife.bind(this, view);
initView();
initListenner();
return view ;
}


以上是java 代码 ,我们习惯  在return view  之前 做 initListener(),java 可以 没有报空指针,但是在 kotlin 中 会暴 空指针 ,那怎么解决呢,相信大家早已经很 0 疼了 ,那么我就来告诉大家吧,

0疼 的我 写下了以下代码 完成事件监听

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initView()
initListener()
}

“`

你不注意可能看不出来 ,因为 kotlin 中的fragment 中有 两个方法
一个是 onCreateView () ,一个是onViewCreate()方法 ,这个方法在onCreateView 中return view 之后才调用。 这下明白了吧 ,
我们必须在执行完onCreateView 中的 return view 之后 才能 initListenner () ;
提供一张图 对比以下
这里写图片描述

这个坑害的我们 好苦 啊 。

猜你喜欢

转载自blog.csdn.net/baidu_38477614/article/details/78919593