android学习笔记(一)activity的基本用法和创建,bundle如何传递数据,intent的用法
一,activity
activity在android中相当于php中的一个html页面,只要处于这个页面,就代表这个activity处于活动状态,用户在这个界面上所做的任何操作都是针对这个activity来说的,activity从oncreate开始后存在,直到调用ondestroy后结束其生命周期,当Activity的处于后台不可操作活出与前台但无法进行互动时,此时的Activity处于暂停状态,但依然在程序中存在,并没有被释放掉,当Activity处于前台和用户进行交互时,此时Activity处于激活态,即当前的活动页面,当Activity被另一个页面完全覆盖后,就处于停止状态,此时通常系统会自动调用函数将其杀死,这就是Activity的三种基本状态,下面来说一下怎么创建Activity
对于android来说创建一个activity有两种方式,
第一种是手工添加,需要完成3个步骤,
1.首先是创建一个类,类继承自android.app.activity,如下图,需要填写的为name也就是类名,和superclass这一项,这一项填写android.app.activity即可,其他默认即可
2.在res/Layout下创建一个xml文件,文件名称最好与创建的类名关联,方便以后修改,这里取名叫Activity_Thrid
之后需要对其进行修改与之前的新建Activity关联上
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.helloandroid.ThridActivity" >
3.在入口程序中注册
在三个步骤完成后,也就代表一个Activity注册完成了。
第二种是自动添加:
选择New-other在弹出的对话框中选择AndroidActivity后,就会有系统自动完成所有内容的添加
二.intent
intent 的中文翻译为意图,也就是打算干什么的意思,在Android中的实际运用也就是打算干什么,intent分为隐式意图和显式意图,区分这两个很容易,打个比方说,怪盗kid去偷美术品的时候都会寄一张预告函,告诉主人,我将于XX点于XX地点偷取XX,这个就是显式意图,普通小偷偷东西并不会事先通知你任何事,而都是在私下里进行的,这个就是隐式意图,两者的区别就在于会不会事先设置好应该传递给那些组件,下面就来介绍一下显式意图和隐式意图两种不同方式的传递过程
1.显式意图,显式意图会实现通过设定好传递的地点
Intent intent=new Intent(MainActivity.this, SecondActivity.class);//定义意图
或者 Intent intent=new Intent()
intent.setClass(MainActivity.this, SecondActivity.class);
或者
Intent intent=new Intent()ComponentName com=new ComponentName(MainActivity.this, SecondActivity.class);
intent.setComponent(com);
三种方式来定义显式意图,可以很明显的看出,每种方式都有明显的指出起始Activity和需要送达的activity,这样明确指出需要送达地点的意图就是显式意图
2.隐式意图,就是指不指出需要送达地点的意图,那么android是怎么来传输这种意图了,一般情况都是根据xml中设置的action,data和Category来自发决定要往哪里发送
也就是需要在AndroidManifest.xml里面事先设置后activity的action,data以及Category,具体的设置可以参考下面的代码:
<activity
android:name=".ThridActivity"
android:label="Thrid Activity label" >
<intent-filter>
<!-- 自定义的动作 -->
<action android:name="com.example.helloandroid.ThridActivity" />
<!-- 附加信息 -->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
注册后,就需要对意图的action和category进行设置,如下代码,这样android就会在运行时自动根据action和category进行匹配,如果匹配结果只有一项则直接开始运行,如有多项会打开一个选择列供用户进行筛选,
Intent intent=new Intent();//定义意图
intent.setAction("com.example.helloandroid.ThridActivity");
intent.addCategory("android.intent.category.DEFAULT");
3.bundle的使用
bundle的作用在android中是用来传递数据的,通常的载体为意图,也就是说bundle可以承载在意图中将数值传到目标组件处使用
Bundle bundle = new Bundle();
bundle.putString("name", "thridbutton");
intent.putExtras(bundle);
如上代码,向bundle中压入数据后,将bundle放入意图中
之后再目标组件处提取bundle中的数据即可
Bundle bundle=this.getIntent().getExtras();//获取bundle数据
String str=bundle.getString("name");
小超没有超能力: public void playBack(){ if(data!=null){ if(mId==0){ mId=data.length-1; }else{ mId--; } mPlay.stop(); Log.i("player","目前曲目"+mId); String Name=data[mId][0]; playmedia(Name); 你好,这个是实现快进的吗?
kobb666: 项目github地址可否发下,最近在研究这方面
毛发苍苍: .。。。。。。
柯瓦特罗 回复 coolzyj: 能把文档发一下吗,暂时没有遇到
柯瓦特罗 回复 weixin_40192115: 不能直接运行exe文件,运行需要参数,可以通过cmd来运行,具体的运行形式可以 Project1.exe 待转换文件路径 转换后文件存储路径