您的位置:首页 > 其它

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

2017-12-28 10:49 459 查看

前言

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 () ;

提供一张图 对比以下



这个坑害的我们 好苦 啊 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: