今天对前面学的进行复习一下

Android Studio 是支持中文变量和函数名称的
尽量使用自己的手机直接连接上电脑进行真机调试,我发现模拟器有些问题。强烈不建议使用。
使用 Crtl + Alt + L 整理代码 这个会与QQ的热键冲突,重新设置QQ热键为其它即可

第一章 讲了怎么开始玩

安卓系统架构是分四层的

搭建环境很简单,基本就是在官网下载安装包,一路 下一步即可

创建一个工程并了解工程目录中的各个文件夹里面是干啥的文件,了解即可,用的多了自然明白。
学会使用日志工具Log 这个是安卓中使用的,在纯Kotlin中是不能使用的。这个工具能监视程序中的变量和其它一些问题。这个会经常用到。日志是分级的,分下面五个级别,咱一般就用Log.d 来打印一些长用的调试信息
Log.v()琐碎 Log.d()调试 Log.I重要 Log.w警告 Log.e错误

第二章 讲了Kotlin这个语言的基本玩法

在Kotlin中对变量的声明用Val或Var区别就是后者声明是一个可以变的量,前者声明一个不可变的量。在Kotlin中有很好的变量类型推导机制,可以不用声明变量类型,但我习惯还是加上变量类型,一看就直到是什么类型的变量。
IF和WHEN是可以有返回值的
接口 是一个标准是一个办法,至于怎么实现这个办法,谁调用谁处理具体过程
数据类 和集合基本差不多,没具体研究,用到的时候自然就人体会到
单实例 就是这个类只能产出一个对象,
Lambda编程就是可以把一小段程序当成参数来传递给函数
Kotlin是不允许空指针的,并对这个有严格的检查机制。

第三章 讲了怎么玩Activity

Activity其实你可以把他理解成一个窗口,程序载各种与用户交互控件的一个集合。

创建Activity时一般默认会创建这个Activity的布局文件这个没啥好说的,逻辑和界面分离

在Activity中使用弹出对话框提示 Toast的使用
Toast.makeText(this,“这是一个提示”,Toast.LENGTH_SHORT).show()
干杯 制作文本(这 这是一个提示 长短的)显示
提示框。制作一个文本提示(就是当前窗口,提示内容,显示时长) 显示给客户
具体还有其它啥玩法查查百度就直到了

在Activity中使用菜单,要先创建菜单布局,然后在Activity中加载这个布局才能使用。
这里特别要注意:创建菜单文件夹时一定要全小写menu否则无法弹出添加菜单布局命令
1、先建立菜单栏的布局文件
2、再在逻辑Activity里面做两件事,第一件事就是【创建选项菜单】第二件事就是【选择选项菜单上的栏目】这两个事,都是重写这两个事件的函数而已

显示Activity 有两种方式,一种是显式的,一种隐式
注意:所有的事件,都必须在Activity创建时的函数内声明

    //注册单击监听事件
        button.setOnClickListener {
            val 意图 = Intent(this, Main2Activity::class.java)
            startActivity(意图)
        }

这种显示的打开Activity是很简单的,创建一个意图,用打开Activity函数打开这个意图即可
隐式的则使用在AndroidManifest.xml中添加给注册Activity两个属性来处理,这种方法感觉比直接使用窗口名的方法要麻烦一些
隐式启动主要是用来启动第三方应用的。自己写的窗口还是第一种方便些

向下一个窗口传递数据
在第一个窗口里面用putExtra来把数据附加到意图里面

        //单机监听事件
        button.setOnClickListener {
            val 意图 = Intent("窗口二")
            val 数据="adfadsfads"
            意图.putExtra("数据键名",数据)
            startActivity(意图)
        }

在第二个窗口里面用getStringExtra来把意图里面的数据取出来

        val 窗口一传来的数据 = intent.getStringExtra("数据键名")
        textView2.text = 窗口一传来的数据

这里注意一下,不同的数据类型用不同的intent.get后面跟类型就可以了。

向上一个窗口返回数据
在第一个窗口里面要做二件事,第一件事是启动方式要改为startActivityForResult 启动方式

        button.setOnClickListener {
            val 意图=Intent(this,Main2Activity::class.java)
            startActivityForResult(意图,1)
        }

第二件事就是要接收第二个窗口返回值

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if(requestCode==1){
            if(resultCode== Activity.RESULT_OK){
                val 窗口二返回的数据=data?.getStringExtra("窗口二键名")
                textView3.text=窗口二返回的数据
            }
        }
    }

在第二个串口里面要无论是用户手动销毁还是按返回键销毁都要给第一个窗口传递数据

package com.example.menu

import android.app.Activity
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main2.*

class Main2Activity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)

        button3.setOnClickListener {
            给上一个串口传递数据()
        }
    }




    override fun onBackPressed() {
        给上一个串口传递数据()
    }

    fun 给上一个串口传递数据(){
        val 意图 = Intent()
        意图.putExtra("窗口二键名", "窗口二的键值")
        setResult(Activity.RESULT_OK,意图)
        finish()//销毁当前窗口
    }
}


Activity 声明周期 这个好理解
四个生命周期分别是
1、运行状态 在栈顶并可见 就是你当前能看到的,正在和你交互的窗口当前能看到的状态
2、暂停状态 不在栈顶 但可见。就是放到当前正在交互窗口的后面了,有可能马上成为当前交互窗口可见但不可交互的状态
3、停止状态 不在栈顶并不可见 就是看不见了,暂时不再和用户交互了的状态
4、销毁状态 不在栈内 就是从栈中已经移除的状态

四种状态对应了7个事件
1、onCreae() 第一次创建窗口时发生 一般在这里加载布局 和注册事件
2、onStart() 窗口由不可见变为可见时发生
3、onResume() 准备好和用户交互时发生。此时窗口肯定处于栈顶并处于运行状态
4、onPause() 准备启动窗口或者准备恢复另一个窗口时发生。
5、onStop() 窗口完全不可见时发生。
6、onDestroy() 窗口被销毁之前发生。
7、onRestart() 窗口由停止状态变为运行状态之前发生,也就是重新启动了窗口。

三种生存期:
1、完整生存期:窗口在第一次创建和窗口被销毁之前所经历的就是完整的生存期,一般情况在第一次创建窗口的时候初始化各种操作,而在被销毁前释放所有资源
2、可见生存期:窗口由不可见转为可见和窗口完全不可见之间所经历的就是可见生存期。
3、前台生存期:这个不用说,就是当前可交互的状态,是由停止状态变为运行状态之前到准备启动或调用另一个窗口之前的这个期间。
这里讲解声明周期主要还是教在什么时候会发生什么事件,从而应当怎么处理。和WINODWS中的窗口事件基本差不多,不用细看,用时就知道了。

还有一种情况就是当窗口被完全销毁回收后,如果再次返回被回收的窗口时,原来的数据丢失怎和办,这里会使用在销毁前系统肯定会调用

    override fun onSaveInstanceState(outState: Bundle, outPersistentState: PersistableBundle) {
        super.onSaveInstanceState(outState, outPersistentState)
    }

这个函数,可以在这个函数里把窗口上所有变量的值先保存一下,然后再在初次创建窗口事件中读出来即可。个人感觉这个设计很垃圾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤脚_码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值