Android学习记录(二)

1.在Android Studio中使用switch语句case语句当中不能使用R.id这是为什么?如何解决?

因为在Android Studio中,R.id是自动生成的一个类,在其中定义了所有XML文件中的控件ID。而在switch语句中,case后面只能跟整型常量表达式或枚举常量,不能直接使用R.id作为case的值,而R.id不是常量。特别是R.id.add_item在最新的Android中已不再作为一个常量存在,因此当我们使用switch语句时会报错;

解决这个问题的方法有两种:

(1) 将R.id转换为整型常量,可以使用以下代码将R.id.xxx转换为整型常量:```int id = getResources().getIdentifier("xxx", "id", getPackageName());```然后将id用于switch语句的case中。

(2) 使用if语句代替switch语句,因为if语句可以使用布尔表达式作为判断条件,而不仅限于整型常量。这两种方法都可以解决switch语句case语句当中不能使用R.id的问题。

如果代码基本工扎实推荐第二种方式解决问题。例如在第一行代码中的menu菜单的相关实例中就有涉及,解决方案如下代码:

public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        if (item.getItemId()==R.id.add_item){
            Toast.makeText(this,"You clicked add",Toast.LENGTH_SHORT).show();}
            else {
                Toast.makeText(this,"You clicked remove",Toast.LENGTH_SHORT).show();
        }
        return true;
    }

2.Intent是什么?有何作用?

Intent是Android程序中各组件之间进行交互的重要方式。

作用:(1)指明当前组件想要执行的动作;

           (2)在不同组件之间传递数据;

           (3)启动活动、服务、广播接收器、内容提供器;

2.Intent大致可以分为几种?有何区别?

大致分为以下两种:

①显式Intent:打开第二各活动想要回到上一个活动,直接点击Back即可返回上一活动,这种Intent“意图”明显的就称为显式Intent;

②隐式Intent:不明确指出想要启动哪个活动,而是指定了一系列更为抽象的action(指明当前活动能够启动其他活动,并且一个活动中只能指定一个action)与category(指明一些附加信息)等信息,然后交由系统去分析这个Intent,判断合适的活动并启动;

区别:最主要的区别就是其“意图”。

3.什么是返回栈?

由于Android中是使用任务(Task)来管理活动,一任务就是一组存放在栈里活动的集合,这个栈就是返回栈。

4.返回栈是如何管理活动的?

由于栈是一种后进先出的数据结构,所以最新启动的活动始终处于栈顶,而系统总是显示处于栈顶的活动,当我们按下Back键时,处于栈顶的活动就会出栈,前一个入栈的活动就会重新处于栈顶。

5.活动有哪些状态?

①运行状态:即活动处于返回栈栈顶位置;

②暂停状态:此种状态的活动不处于栈顶,但是仍然可见,因为并不是每一个活动都会占满整个屏幕,而处于暂停状态的活动就是这种情况,其仍然是活着的,并且系统一般也不会回收这种活动,除非是内存及其不足时;

③停止状态:当一个活动不处于栈顶,并且完全不可见时,虽然系统仍会保持相应状态和成员变量,但是此时是不可靠的,且很有可能会被回收;

④销毁状态:当活动被从返回栈中移除后就变成了销毁状态。

6.Activity类定义了几种回调方法?

七种。分别是:

(1)onCreate():活动第一次创建时调用,并且要在该活动中完成初始化操作;

(2)onStart():该方法在活动由不可见变为可见时调用;

(3)onResume():该方法在活动准备好与用户交互时调用。且此时活动一定处于栈顶;

(4)onPause():这个方法在系统准备启动或恢复另一个活动时调用;

(5)onStop():这个方法在活动完全不可见的时候调用;

(6)onDetroy():这个方法在活动被销毁之前调用,之后活动状态将变为销毁状态;

(7)onRestart():这个方法在活动由停止转为运行状态时调用,即活动重新启动;

7.根据回调方法,活动可分为几种生存周期?分别是?

三种生存期。分别是:

(1)完整生存期:onCreate()---->onDestroy();

(2)可见生存期:onStart()---->onStop();

(3)前台生存期:onResume()---->onPause();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值