Android kotlin基础语法

1、继承类和实现接口

继承类是冒号连接,java是extends连接。实现接口是逗号连接,java是implements连接

class MainActivity : AppCompatActivity(),MyKotlinInterface ,MyInterface{

java:public class Main3Activity extends AppCompatActivity implements MyKotlinInterface {

2、变量修饰符var和val,const val

var代表变量,可多次赋值。val代表常量相当于java的final,只能赋值一次

const val相当于java的public final static,可以直接访问。

3、常用数据类型创建

private var ab: Int = 0            //java是int
private var `object`: Any? = null//java是Object
private var bitmap: Bitmap? = null
var buff: ByteArray? = null        //java是byte
private var string: String? = null

4、创建基本控件对象,控件赋值,添加事件,activity跳转

创建:

方法一:类型java的语法

val te3 = findViewById<View>(R.id.onete) as TextView
val bt = findViewById<View>(R.id.onebutton) as Button;
val bt2 = findViewById<View>(R.id.twobutton) as Button;
var image = findViewById<View>(R.id.imagelg) as ImageView

方法二:直接导入xml文件 即可直接根据控件ID调用控件对象

import kotlinx.android.synthetic.main.activity_main.*

注:activity_main是layout文件名。activity与fragment同样适用

如:text控件

<TextViewandroid:id="@+id/mText"android:layout_width="match_parent"android:layout_height="match_parent"android:text="@string/hello_blank_fragment" />

直接ID调用

mText.text = "ss22"
mText.setOnClickListener {Log.i("lgq","fff");
}

赋值:

te3.text = "aabb"
te3.setTextColor(resources.getColor(R.color.colorPrimary))
bt.setOnClickListener {startActivity(Intent(this@MainActivity, Main2Activity::class.java))
}

public fun setImage(bitmap: Bitmap){  //java的void这里是funvar image = findViewById<View>(R.id.imagelg) as ImageViewimage.setImageBitmap(bitmap)
}

 

5、kotlin循环语句

for (a in 0..19) {barEntityList.add(internentBarEntity)
}

6、onActivityResult,requestCode请求码,resultCode返回码

java是:

put

Intent intent = new Intent(MainActivity.this,TwoActivity.class);
startActivityForResult(intent,66);//66是请求码

get

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);String result = data.getExtras().getString("result");//得到新Activity 关闭后返回的数据
}

kotlin是:

put

startActivityForResult(Intent(this@MainActivity, Main2Activity::class.java),54)

get

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)when (resultCode) {3 ->  {val result = data!!.getExtras().getString("result")//得到新Activity 关闭后返回的数据}}
}

 java返回数据:

Intent intent = new Intent();
//把返回数据存入Intent
intent.putExtra("result", "My name is meixi");
//设置返回数据
setResult(33, intent);
//关闭Activity
finish();

kotlin返回数据:

val intent = Intent()
//把返回数据存入Intent
intent.putExtra("result", "My name is meixi")
//设置返回数据
setResult(3, intent)
//关闭Activity
finish()

 

注:如果是在fragment调用startActivityForResult跳转。则请求码返回时是随机数,而不是原请求码

 

 7、activity嵌套fragment.kt

1、创建fragment.kt

class BlankFragment : Fragment() {private var mTitle: String? = nullcompanion object {fun getInstance(title: String): BlankFragment {val fragment = BlankFragment()val bundle = Bundle()fragment.arguments = bundlefragment.mTitle = titlereturn fragment}}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)}override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {return inflater.inflate(R.layout.fragment_blank, container, false)}override fun onViewCreated(view: View, savedInstanceState: Bundle?) {super.onViewCreated(view, savedInstanceState)LgqLogutil.e("11")mText.text = "ss22"mText.setOnClickListener {Log.i("lgq", "fff");}}
}

2、activity加载fragment

private var mBlankFragment: BlankFragment? = null
val transaction = supportFragmentManager.beginTransaction()
BlankFragment.getInstance("title").let {mBlankFragment = it
transaction.add(R.id.frame,it,"tag")}
transaction.commitAllowingStateLoss()

 

Kotlin中@JvmOverloads的使用方法

 

Overload翻译为重载,JvmOverloads即重载方法
 

在Kotlin中@JvmOverloads注解的作用就是:生成多个重载方法,这样方便我们调用,可以省掉一些不关心的参数可以修饰方法或者类
 

代码解析:
 

普通kotlin语法


class Mytext : TextView {
 
    constructor(context: Context) : super(context) {}
 
    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {}
 
 
    constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(
        context,
        attrs,
        defStyleAttr
    )
 
}
 

等同于如下@JvmOverloads语法


class Mytext @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = com.google.android.material.R.attr.materialCardViewStyle
) : TextView(context, attrs, defStyleAttr)
 

实例2
JvmOverloads修饰方法


class Overloads {
    @JvmOverloads
    fun overloaded(a: Int, b: Int = 0, c: Int = 1){
        println("$a, $b, $c")
    }
}
调用JvmOverloads修饰的方法(如果 Int没赋默认值,调用时,必须传入实参)
Overloads overloads = new Overloads();
overloads.overloaded(1, 2, 3);
overloads.overloaded(1);
overloads.overloaded(1,3);
运行结果

2019-11-06 13:47:29.379 15658-15658/com.tianxin.mykotlin I/System.out: 1, 2, 3
2019-11-06 13:47:29.379 15658-15658/com.tianxin.mykotlin I/System.out: 1, 0, 1
2019-11-06 13:47:29.379 15658-15658/com.tianxin.mykotlin I/System.out: 1, 3, 1
 

kotlin工程demo链接:https://download.csdn.net/download/meixi_android/11212091

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作245:vue的注意规范之v-if 与 v-for 一起使用

当 v-if 与 v-for 一起使用时&#xff0c;v-for 具有比 v-if 更高的优先级&#xff0c;这意味着 v-if 将分别重复运行于每个 v-for 循环中 所以&#xff0c;不推荐v-if和v-for同时使用 使用推荐方式&#xff1a; 或者&#xff1a;放在计算属性遍历 当它们处于同一节点&#x…

Django create_user with is_active=False

Django create_user with is_activeFalse 下面的内容来自官方文档is_active布尔值。指示用户的账号是否激活。我们建议把这个标记设置为False 来代替删除账号&#xff1b;这样的话&#xff0c;如果你的应用和User 之间有外键关联&#xff0c;外键就不会失效。 它不是用来控制用…

Android kotlin实现底部导航栏

1、实现效果&#xff0c;可点击或者滑动切换fragment 点击 滑动 实现方法&#xff1a; 1、创建三个fragment.kt 2、创建fragmentAdapter class MyFragmentAdapter(fragmentManage…

jeecg富文本编辑器增加字体(仿宋)

jeecg富文本编辑器增加字体(仿宋) jeecg富文本编辑器增加字体(仿宋) 温馨提示&#xff1a;jeecg 提供了 uedit 富文本的实现&#xff0c;如下针对的是 uedit 增加仿宋字体示例。 主要修改三个文件&#xff1a;plug-in\ueditor\ueditor.config.js、plug-in\ueditor\lang\en\en.…

Android kotlin使用RecyclerView实例

1、创建entity类 class InternentBarEntity {var bname: String? nullvar barea: String? nullvar badddata: String? nullvar bimage: String? nullvar bid: String? null } 2、创建adapter类 /***作者&#xff1a;created by meixi*邮箱&#xff1a;15913707499…

DNS记录类型

在之前的文章中&#xff0c;我们了解了什么是DNS以及DNS如何工作&#xff0c;现在让我们来看看 DNS 记录有哪些种类&#xff0c;以及它们有什么作用。 要理解不同的 DNS 记录&#xff0c;首先必须了解区域文件是什么? 我们来解释一下各部分分别表示什么&#xff1a; A 和 AAAA…

Android 频道管理,可拖动item排列,删除,添加

样式效果 1、创建自定义GridView /*** 作者&#xff1a;created by meixi* 邮箱&#xff1a;15913707499163.com* 日期&#xff1a;2019/5/31 13*/public class DragGridView extends GridView {/** 点击时候的X位置 */public int downX;/** 点击时候的Y位置 */public int dow…

2019王小的Java学习之路

文章背景 身边有个非常要好的朋友王某某&#xff0c;因为是发小的关系&#xff0c;之后文章统称为王小。 大专毕业后 顺利 的被安排进了某某工厂工作&#xff0c;工作一段时间后&#xff0c;尽管工作比较轻松&#xff0c;却无法忍受终日的流水线生活&#xff0c;经过我的介绍&…

JVM入门到放弃之基本概念

1. 基本概念 jvm 是可运行Java代码的假想计算机&#xff0c;包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 jvm 是运行在操作系统之上的&#xff0c;屏蔽了与具体操作系统平台相关的信息&#xff0c;使得Java程序只需生成在 jvm 上运行的字节码…

java线程并发库之--线程同步工具Exchanger的使用

Exchanger可以在两个线程之间交换数据&#xff0c;只能是2个线程&#xff0c;他不支持更多的线程之间互换数据。今天我们就通过实例来学习一下Exchanger的用法。 Exchanger的简单实例 Exchanger是在两个任务之间交换对象的栅栏&#xff0c;当这些任务进入栅栏时&#xff0c;它们…

了解JVM运行时的内存分配

前言 上文中&#xff0c;在介绍运行时数据区域中的 JAVA 堆时&#xff0c;提到了 JVM 中的堆&#xff0c;一般分为三大部分&#xff1a;新生代、老年代、永久代&#xff0c;本文将进一步了解运行时的内存分配情况。 正文 1.新生代主要用来存放新生(new)的对象。一般占据堆的 …

C#:继承过程中的静态成员

在知乎上看到一个关于“泛基“的实现&#xff0c;感觉挺有意思&#xff0c;想试试效果&#xff0c;代码如下&#xff1a; public abstract class MyBase<T> where T : MyBase<T>{public static string DataForThisType { get; set; }public static T Instance { ge…

Android 分享功能大全

实现效果&#xff1a; 实现步骤&#xff1a; 1、配置SDK 2、 配置平台SDK demo云盘链接&#xff1a;https://pan.baidu.com/s/1DRr85PKtVpuexfyCc2jwsg 在线交流密码&#xff1a;QQ1085220040 demo链接&#xff1a;https://download.csdn.net/download/meixi_android/112506…

Android list转xml

1、实体类class KeyValue {private String name;private String value;public KeyValue(String name, String value) {this.name name;this.value value;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getValue…