Kotlin-Android之Activity使用详解

作者:不知 不知 时间:2023-05-02 14:53:03 

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

标签:Kotlin,Android,Activity
0
投稿

猜你喜欢

  • 利用java操作Excel文件的方法

    2021-12-13 03:03:49
  • SpringCloud Zuul基本使用方法汇总

    2023-11-14 15:21:54
  • c#判断磁盘驱动器类型的两种方法介绍

    2023-12-18 10:04:53
  • WinForm之BindingSource基础操作实例教程

    2021-10-18 07:37:59
  • C#中的委托、事件学习笔记

    2023-01-21 18:03:49
  • 跨域解决方案Jsonp原理解析

    2023-11-07 18:48:05
  • Jetpack Compose常用组件详细介绍

    2022-10-16 19:42:58
  • C#实现带百分比的进度条功能示例

    2023-09-08 14:17:03
  • mybatis-plus 使用Condition拼接Sql语句各方法的用法

    2022-07-06 03:51:12
  • java json 省市级联实例代码

    2021-11-13 18:50:35
  • 通过特性(attribute)为枚举添加更多信息示例

    2023-10-10 09:22:06
  • Spring Boot加密配置文件方法介绍

    2023-09-11 17:15:58
  • springcloud feign调其他微服务时参数是对象的问题

    2023-01-23 06:24:04
  • android 分辨率适配的方法

    2023-03-09 09:21:47
  • Spring@Value使用获取配置信息为null的操作

    2021-08-01 23:46:27
  • 常见Android编译优化问题梳理总结

    2021-08-17 11:21:48
  • Java Socket实现多人聊天系统

    2023-08-08 04:44:35
  • java 归并排序的实例详解

    2021-12-06 22:58:05
  • Java二维数组查找功能代码实现

    2023-01-04 19:47:17
  • C#基于XNA生成随机颜色的方法

    2021-07-05 08:34:50
  • asp之家 软件编程 m.aspxhome.com