整理一些kotlin小技巧和遇到的一些从java转到kotlin需要注意的一些小细节。

1.扩展函数

用Java写android时一般都是写一些Utils类,里面写一些常用到的静态方法,可以直接类名.method(),例如Toast方法:
java:

public static void showT(Context context, String msg) {    Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();}/** * show Toast (default short) * * @param resId resId */public static void showT(Context context, int resId) {    Toast.makeText(context, resId, Toast.LENGTH_SHORT).show();}

用kotlin可以通过扩展Context类的方式,加入一个toast()方法,使得在有上下文的地方可以方便调用:

fun Context.toast(message: String, duration: Int = Toast.LENGTH_SHORT) {    Toast.makeText(this, message, duration).show()}

这种公共方法可以写在任意工具类里,一般放到package/util/下面的文件中,下面是在Activity中的用法:

override fun onCreate(savedInstanceState: Bundle?) {    super.onCreate(savedInstanceState)    setContentView(R.layout.activity_main)    toast("sss")}

注意在Fragment中需要加上context:

activity.toast(myString)

这个activity相当于调用当前Fragment的this.getActivity();

2.把一个array转成list

val otherAdv = arrayOf("DVBOTT_HD_70004000", "DVBOTT_HD_70004100", "DVBOTT_HD_70004200")var codes = Arrays.asList(*otherAdv)

注意需要加个*

3.设置回调

java:

public interface OnEventListener {    void onEvent(T t);}public void setOnEventListener(OnEventListener onEventListener) {    this.onEventListener = onEventListener;}setOnEventListener(new OnEventListener() {            @Override            public void onEvent(Integer integer) {                ...            }        });

kotlin:

interface OnEventListener {    fun onEvent(t: T)}setOnEventListener(object : OnEventListener {            override fun onEvent(t: Int) {                ...            }        })

更多相关文章

  1. android 小练习(一) ---仿微信UI主界面
  2. Android面试题小结
  3. Android(安卓)Window与WindowManager 理解与源码分析
  4. android:OKHttp的使用
  5. Android倒计时神器(CountDownTimer)
  6. Android复习笔记(6) -BrodCastReceiver (广播接收者
  7. android 关于Toast重复显示解决方法
  8. .Net程序员玩转Android开发---(20)Android绑定服务
  9. linux chrome运行android应用方法

随机推荐

  1. Android双击
  2. android menu自定义菜单 Demo
  3. android > 屏蔽掉返回键
  4. 第一代Android壳源码--某某公司早期壳代
  5. How to fix the Android AVD no target p
  6. Android之关于Intent的Flag属性的讲解
  7. 在服务器上使用grandle打包android源码
  8. DownloadManager 文件下载
  9. android 模拟器中找不到程序
  10. Android电视关闭效果