Kotlin-Android之Activity使用详解
作者:不知 不知 发布时间:2023-05-02 14:53:03
标签:Kotlin,Android,Activity
Activity中Toast的使用
Toast.makeText(this,"ADD",Toast.LENGTH_SHORT).show()
// Toast.makeText(Activity,提醒字符,length_long|short 显示时常长|短)
Activity中不使用findViewById()获取控件ID
打开Gradle Scripts 在 build Gradle(Project:AppName)的dependecies中添加如下一段:
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
然后再在build gradle(Module:AppName:app)的 plugins 标签结束处添加如下一段:
plugins {
...
}
apply plugin: 'kotlin-android-extensions'
这样你就可以直接使用控件ID调用方法了,不再通过findViewById()获取了
bt1.setOnClickListener{...}
Activity中使用菜单Menu
现在res目录下右键Directory下新建Menu目录,然后新建MainMenu文件,编辑如下代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/Add_item"
android:title="ADD"/>
<item
android:id="@+id/Remove_item"
android:title="Remove"/>
</menu>
返回MainActivity按Ctrl+O(Mac OS中是Control+O)重写onCreateOptionsMenu()和onOptionsItemSelected()方法
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main,menu) //获取上面写好的资源文件
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.Add_item->Toast.makeText(this,"ADD",Toast.LENGTH_SHORT).show()
R.id.Remove_item->Toast.makeText(this,"REMONE",Toast.LENGTH_SHORT).show()
}
return true
}
Activity中intent的使用
这里先新建一个IntentActivity,并在清单文件manifest中注册,一般会自动注册
<activity android:name=".IntentMainActivity"> ...</activity>
intent显式
//先获取Intent对象,方法(当前的活动,跳转的活动)
val intent = Intent(this, IntentMainActivity::class.java)
//开始跳转
startActivity(intent)
intent隐式
intent隐式需要使用清单文件manifest中的action和category两个标签,你可以自行添加,action的name随意,第一个category的name需设置为default,第二个category的name随意
<activity android:name=".IntentMainActivity">
<intent-filter>
<action android:name="com.example.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="com.example.activity.CATEGORY"/>
</intent-filter>
</activity>
返回MainActivity,编写以下代码:
val intent = Intent("com.example.ACTION_START")
intent.addCategory("com.example.activity.CATEGORY")
startActivity(intent)
intent数据的传递
传递数据
//MainActivity
val intent = Intent(this, IntentMainActivity::class.java)
//向该IntentActivity传输数据,putExtra(name,value)
intent.putExtra("test_data", "显式intent")
startActivity(intent)
//IntentActivity
//接受上一个activity传输的数据getStringExtra(name)
val data = intent.getStringExtra("test_data")
返回数据
//MainActivity中修改startactivity()为startActivityForResult()
val intent = Intent(this, IntentMainActivity::class.java)
startActivityForResult(intent,1)
//因为使用了startActivityForResult()方法,
//在IntentActivity销毁之后会回调MainActivity的onActivityResult()方法,
//所以我们需要重写onActivityResult来得到返回的数据
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when(requestCode){
1->if (resultCode== RESULT_OK){
val returnedData= data?.getStringExtra("data_return")
Log.d("MainActivity","returned data is $returnedData")
}
}
}
//IntentActivity中创建一个intent对象来传递数据
val intent =Intent()
intent.putExtra("data_return","hello,MainActivity")
setResult(RESULT_OK,intent)
finish()
扩展
intent不仅仅是可以跳转至你创建的Activity,还可以跳转至系统应用
如浏览器:
bt3.setOnClickListener {
val intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse("https://www.baidu.com")
startActivity(intent)
如跳转至电话:
bt4.setOnClickListener {
val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:10010")
startActivity(intent)
参考
[1]郭霖.第一行代码 Android[M].第三版.北京.人民邮电出版社.2020.
来源:https://blog.csdn.net/qq_41858698/article/details/120247959


猜你喜欢
- SqlSessionFactory的openSession方法正如其名,Sqlsession对应着一次数据库会话。由于数据库回话不是永久的,
- ArrayBlockingQueue有界的阻塞队列,内部是一个数组,有边界的意思是:容量是有限的,必须进行初始化,指定它的容量大小,以先进先
- 一、Java异常架构与异常关键字Java异常简介Java 异常是 Java 提供的一种识别及响应错误的一致性机制。Java 异常机制可以使程
- 😜shape属性详解<?xml version="1.0" encoding="utf-8"?
- 一、作用和区别 break的作用是跳出当前循环块(for、while、do while)或程序块(switch)。在循环块中的作用
- 1.注解的理解1)注解(Annotation)也被称为元数据(Metadata),用于修饰解释包. 类、方法、属性、构造器、局部变量等数据信
- xml里面配置标签:<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc./
- 主内存和工作内存Java 内存模型规定了所有的变量都存储在主内存中, 每条线程有自己的工作内存线程的工作内存中保存了被该线程使用的变量的主内
- 在我们移动应用开发过程中,偶尔有可能会接到这种需求:1、在手机桌面创建一个窗口,类似于360的悬浮窗口,点击这个窗口可以响应(至于窗口拖动我
- 首先我们应该知道线程安全问题一般发生在成员变量上,这是为什么啦?因为成员变量是存放在堆内存中,而堆内存又是线程共享的,这就造成了线程安全问题
- 1.概述在之前的博文中简单介绍过如何实现fragment之间的信息交互:《Android中Fragment与Activity之间的交互(两种
- 本文实例为大家分享了Java实现斗地主的具体代码,供大家参考,具体内容如下import java.util.ArrayList;import
- HashMap的get()方法的NullPointerException今天写代码发现一个 bug,HashMap的 get() 方法一直报
- 前言首次通过右滑来返回到上一个页面的操作是在 IOS7上出现。到目前android应用上支持这种操作的依然不多。分析其主要原因应该是andr
- Android的设置界面实现比较简单,有时甚至只需要使用一个简单的xml文件即可.声明简单,但是如何从PreferenceScreen或者P
- 下面是我做C#第一个项目的过程:1.首先打开VS,这里我用的是VS2022预览版,鼠标双击打开VS;图一2.打开VS后会出现下面的页面,鼠标
- 序本文主要研究一下java String的internString.intern()java.base/java/lang/String.j
- 模糊查询Spring Data Jpa的使用可以减少开发者对sql语句的编写,甚至完全不需要编写sql语句。但是,开发过程中总会遇到各种复杂
- 0x00:前言参考之前的《MyBatis 中 SqlMapConfig 配置文件详解》记了一下 MyBatis 中的核心配置文件各个标签的作
- 一、Spring Bean 集合注入在【Spring学习笔记(三)】已经讲了怎么注入基本数据类型和引用数据类型,接下来介绍如何注入比较特殊的