Android活动(Activity)

一直在学习郭霖老师的《第一行代码》,我整理了第二章的笔记。安卓的activity是安卓的四大组件之首,重要性不言而喻。下面的内容都是很基础的。

目录

在活动中添加Toast标签 

在活动中使用Menu

活动的销毁:

活动中的穿梭

活动的生命周期

活动的启动模式


首先,没有在AndroidManifest.xml里面注册的活动是不可以使用的,但是AS会帮助你自己注册(前提是你新建的是活动而不是Java类)。你只需要在此xml中声明主活动即可。声明主活动的语句应该也是死的。(AS强大的提示功能)

所有的活动都必须继承Activity类或者是它的子类,然后才能有活动的特性。活动必须重写onCreate()方法,这个方法是一个活动被创建时必须执行的,重写的格式固定。

Super.onCreate(savedInstanceState);//(AS自动写出了)

安卓的设计讲究逻辑和视图分离,因此不推荐在活动中直接编写界面。通用做法是在布局(layout)中编写界面,然后在活动中将它引用过来。引入布局是setContentView(id),同理,如果你在创建活动时勾选了Generate LayoutFile,那么会自动引入。

布局文件都在res/layout目录下。

一般把所有的图片放在drawable-xxhdpi文件夹 

当使用AS创建项目时,如果选用AddNoActivity,并且再创建活动的时候不勾选GenerateLayout,那么项目中并不包含layout文件夹的,需要手工创建。

引用id的时候使用@id/idname,而制定id则@+id/id_name

安卓中match_parent表示和父元素相等,wrap_content表示当前元素只要刚好能包含里面的内容即可。

在活动中添加Toast标签 

首先在Activity中实例化layout文件夹内的文件中的Button

Button button1=(Button)findViewById(R.id.button_1);

这里我认为R文件中,普通元素的id引用都是这样的,而文件的引用则是R.文件夹名.文件名

实例化之后要为这个button1添加监听器。

button1.setOnClickListener(new View.OnClickListener()

AS会自动重写onClick方法,在这个方法中声明Toast即可。

Toast.makeText(在哪个活动界面活动(上下文),要弹出的内容,弹出的时间长短).show();

//上下文建议: 当前类名.this

在活动中使用Menu

1.在res文件夹中创建menu目录,随后在其中新建Menu resource file。(必须是menu目录,否则找不到相关的file。)

 2.在这个file中创建菜单项格式为

<item android:id=”@+id/idname”

            android :title=”name” />

3.在活动中重写OnCreateOptionsMenu()方法,Ctrl+O快捷键。在方法中,添加getMenuInflater().inflate(,);期间的参数为file的id,以及默认的menu参数 ,return true;

4.重写onOptionsItemSelected()方法,里面用switch(item.getItemId())来表示选中的按键。return true;

活动的销毁:

      一般情况下,back按键即可销毁活动;或者listener添加finish()即可销毁当前活动。

活动中的穿梭

      从主活动跳转到其他活动需要Intent。有显式Intent和隐式Intent之分。

先来看显式Intent:

      首先需要在com的那个包里创建一个新的Activity,这次让他帮忙生成布局layout文件,AS在对应的Acticity中也自动导入了这个布局文件。

      我们需要做的是从主活动跳转到新活动中来,很明显主活动只有一个button可以使用。

Intent intent =new Intent(pageContext(所处文件名.this),新java.class);

startActivity(intent);//启动这个Intent对象即可

      显式的Intent很简单,接下来看隐式Intent,官方推荐隐式Intent?

隐式Intent不仅可以启动自己程序的活动,还可以启动其他程序的活动,这使得不同程序之间共享功能成了可能。

      隐式Intent的声明

Intent intent=new Intent(Intent.ACTION…)

Intent.setData(Uri.parse(“内容”))

StartActivity(intent);

隐式声明相当于告诉系统我需要一个明确特性的程序,系统提供所有满足要求的程序以供选择。程序可以提供的特性在AndroidMainifest中的<intent-filter>标签中提供。

Intent还可以用来传递数据,界面之间的联系靠的就是Intent。

  1. 向下一个活动传递数据。

在button中按规定声明Intent,随后声明一个字符串。

Intent的对象.putExtra(“代号”,字符串变量);

startActivity(intent);

另一个活动接受字符串,首先声明Intent

Intent intent=getIntent();

String data=intent.getStringExtra(“代号”);

注意:1.声明的属性与要接受的属性有关,你必须知道要接受的类型,方法有getIntExtra,getStringExtra等等。

2.返回数据给上一个活动。

返回上一个活动只需要按一下返回键就可以了,但是Android还是提供了一个startActivityForResult()的启动方法来在活动销毁的时候能返回一个结果给上一个活动。

    过程:首先正常声明intent,然后启动时用startActivityForResult(intent,特殊数值)来启动下一个活动。

    下一个活动再

Intent intent=new Intent();

String  data="Me Too";

intent.putExtra("data_return",data);

setResult(RESULT_OK,intent);

finish();

然后回到上一级活动,因为我们启动下一个活动用的是startActivityForResult方法,所以当下一个活动销毁之后,上一级页面需要重写onActivityResult方法。

      这个方法有三个参数,requestCod方法是那个特殊值,resultCode是返回值(RESULT_OK),第三个是数据值。

在方法中    

switch (requestCode)

        {

            case 1:

                if (resultCode==RESULT_OK)//注意这里的变量

                {

                    String returndata=data.getStringExtra("data_return");

                    Toast.makeText(this,returndata,Toast.LENGTH_SHORT).show();

                }

                break;

                default:

        }

安卓的返回键的方法是onBackPressed(),可以在活动中重写这个方法来达到目的!

活动的生命周期

活动的启动模式

Android一共有4种启动模式,standard,singleTop,singleTask,和singleInstance。可以通过在AndroidManifest.xml中通过给activity标签指定android:launchMode来选择启动模式。

1.standard

程序默认的是Standard启动方式,特点就是指哪打哪,不管有没有。

2..singleTop

特点是如果活动在栈顶,那么在又一次创造本活动时,不会创造。

3.singleTask

特点是每次启动该活动时,系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把这个活动之上的活动统统出栈。

4.singleInstance

特点是声明为该模式的活动,系统会把它分到另外的一个单独的栈中。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值