Kotlin-Android之Activity使用详解

目录
  • Activity中Toast的使用
  • Activity中不使用findViewById()获取控件ID
  • Activity中使用菜单Menu
  • Activity中intent的使用
    • intent显式
    • intent隐式
    • intent数据的传递
      • 传递数据
      • 返回数据
      • 扩展
  • 参考

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.

到此这篇关于Kotlin-Android之Activity使用详解的文章就介绍到这了,更多相关Kotlin-Android之Activity使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-09-12

Android startActivityForResult的基本用法详解

知识准备: 1.startActivityForResult(Intent intent, int requestCode):启动 Activity,同时等待该 Activity 返回数据.只有该 Activity 销毁时数据才会被返回. 参数 1:意图,封装要启动的 Activity,当然也可以携带数据 参数 2:请求码,如果是大于 0 的整数,那么该请求码会在 onActivityResult 中的 requestCode中出现,如果小于等于 0,则不会被返回. 2.onActivityRe

Android中PreferenceActivity使用详解

目录 一,Preference介绍 二,PreferencesActivity介绍 三,PreferenceActivity的使用 四,PreferenceActivity分别和ListFragment,PreferenceFragment组合使用 五,Preference数据获取 总结 一,Preference介绍 Android提供的preference以键值对的方式来处理这种情况:自动保存设置的数据,并立时生效,而这种使用android sharedpreferences方式进行保存的,不

Android Studio如何为Activity添加自定义注解信息

普通Java-Kotlin类添加注释 添加类时注释作者信息和日期时间 依次打开 File->Settings->editor->File and Code Templates->Include->File Header->"添加以下代码" 时间表达式 @Date: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} Activity添加注释 添加Activity(或者说是四大组件)注解的方式 1. 首先添加一个live

Android 启动模式FLAG_ACTIVITY_CLEAR_TOP案例详解

四种启动模式 standard: 只要被启动就会创建一个新的 singleTop: 栈顶复用(当被启动的Activity处于Task栈顶时,可以复用,直接调用onNewIntent方法) singleTask: 栈中复用(被启动的Activity已经处于栈中,会将上边的Activity清除出栈,调用onNewIntent) singleInstance 全局单实例(应用场景:地图,Activity初始化需要大量资源) Intent的标志位FLAG Intent.FLAG_ACTIVITY_SIN

Android activity实现延时跳转功能

什么是Activity Activity是一个Android的应用组件,它提供屏幕进行交互.每个Activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满哦屏幕也可以小于屏幕并浮动在其他窗口之上. 一个应用通常是由多个彼此松散联系的Activity组成,一般会指定应用中的某个Activity为主活动,也就是说首次启动应用时给用户呈现的Activity.将Activity设为主活动的方法,如下面代码所示需要在AndroidManifest文件中添加以下内容 <application> .

Android利用CountDownTimer实现倒计时功能 Android实现停留5s跳转到登录页面

利用CountDownTimer实现倒计时,停留5s跳转到登录页面功能,具体如下 举个栗子,引导页面最后一个界面要停留5s跳转到登录页面.代码如下: //假设 这是引导页面最后一个界面 public class MainActivity extends Activity { private TextView count_time; private MyCountDownTimer myCountDownTimer; @Override protected void onCreate(Bundle

Android编程中Intent实现页面跳转功能详解

本文实例讲述了Android编程中Intent实现页面跳转功能.分享给大家供大家参考,具体如下: 安卓四大组件:Activity.Service.Broadcast Receiver.Content Provider Intent实现页面之间跳转 1.无返回值 startActivity(intent) 2.有返回值 startActivityForResult(intent,requestCode); onActivityResult(int requestCode,int resultCod

Android Activity的跳转与传值详解

Android Activity的跳转与传值详解 Activity跳转与传值,主要是通过Intent类来连接多个Activity,以及传递数据. Intent是Android一个很重要的类.Intent直译是"意图",什么是意图呢?比如你想从这个Activity跳转到另外一个Activity,这就是一个意图.Intent类在Android系统中的作用很大,在此不详细说了,后面有文章介绍! Activity跳转,无返回结果 这是最简单的Activity跳转方式.从一个Activity启动

Android Activity中使用Intent实现页面跳转与参数传递的方法

本文实例讲述了Android Activity中使用Intent实现页面跳转与参数传递的方法.分享给大家供大家参考,具体如下: 新建一个FirstAvtivity.java package com.zhuguangwei; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.O

Android Activity跳转动画效果

Activity的跳转动画在5.0的时候做了一个重大的突破,下面来看一下吧 1.5.0之前的overridePendingTransition 相信大家对OverridePendingTransition还是很熟悉的,使用方法也是很简单就是 //fade_in是第二个界面的进入动画,fade_out是第一个界面退出动画,不想动画传入0  overridePendingTransition(R.anim.fade_in,R.anim.fade_out); fade_in : <?xml versi

Android判断手机是否联网及自动跳转功能(收藏版)

android欢迎页自动跳转及手机网络检测,具体实现代码如下所示: 在1.2s后从欢迎页(welcome)跳转到登陆页(Login_Activity),并进行手机网络检测 package com.example.amusic.welcome; import android.content.Intent; import android.content.IntentFilter; import android.support.v7.app.AppCompatActivity; import andr

Android Activity与Intent详解及示例代码

Android有三个基础组件Activity,Service和BroadcastReceiver,他们都是依赖Intent来启动.本文介绍的是Activity的生命周期以及针对Activity的Intent使用. 之前的例子一直都是使用Activity,在一个Layout XML与一个Activity捆绑的情况下可以视为一个Form,多个Layout XML与一个Activity捆绑的话那就是个Application本身了.Intent可以分为显式Intent和隐式Intent:显式Intent

详解Android Activity之间切换传递数据的方法

前面照着android系统的裁剪图片的功能自己写了一个相似的工具.功能是大体上实现了,但留下了一个调用的问题:如何从我的程序调用这个裁剪工具,并且获得裁剪后的图片呢? 其实这个也很简单了,就是intent的基础用法. 先上个图(界面依旧没优化,难看就难看吧): 起始activity,打开图片选择窗口,随便选择一张图片 下面是跳转到裁剪界面 按下crop按钮,退出activity,回到原来界面,并显示裁剪后的图 流程就是这样,也算模拟了系统裁剪功能的整体过程.下面就是实现功能的关键代码和说明了.

详解Android App卸载后跳转到指定的反馈页面的方法

很多人也许会问:360被卸载之后会跳转到指定的反馈页面,是怎么弄的? 其实这个问题的核心就在于:应用被卸载了,如果能够做到后续的代码逻辑继续执行 我们再来仔细分析一下场景和流程 一个应用被用户卸载肯定是有理由的,而开发者却未必能得知这一重要的理由,毕竟用户很少会主动反馈建议,多半就是用得不爽就卸,如果能在被卸载后获取到用户的一些反馈,那对开发者进一步改进应用是非常有利的.目前据我所知,国内的Android应用中实现这一功能的只有360手机卫士.360平板卫士,那么如何实现这一功能的? 我们可以把

Android Intent实现页面跳转的方法示例

应朋友们反馈的Android基础薄弱的问题,决定出一套Android基础教程,帮助大家复习,巩固Android基础,今天要讲的是Android中的Intent实现Android间的页面跳转. 增加Acrivity页面时,首先需要在MainActivity中对页面注册,比如 新建被跳转的页面OtherActivity,其对应的xml文件如下 activity_other <?xml version="1.0" encoding="utf-8"?> <