启动Activity(活动):startActivity(), startActivityForResult()
startActivity(new Intent(action_name));
Note: 调用的Activity在同一应用中,这样用
startActivity(new Intent(this, CalledActivityName.class));
startActivityForResult(new Intent(action_name), int requestCode);
两个启动Activity的区别:
startActivity(), 没有返回结果给调用的Activity;
startActivityForResult(), 从被启动的活动中回传数据给调用者
startActivityForResult(new Intent(), int requestCode)使用介绍:
用于启动指定的Activity,并且从该Activity中获取返回数据
参数: Intent对象,
requestCode请求码,整数值,用于标识正在调用的活动,必须的,被调用的Activity返回数据时,使用requestCode进行识别该Activity;
Note:若requestCode设为 -1,startActivityForResult()无结果返回,效果上等同startActivity()方法
setResult(resultCode, Intent)
被启动Activity中用于回传数据给调用者Activity
参数:
resultCode,结果码(RESULT_OK, RESULT_CANCELLED);
Intent, 回传给调用Activity的数据
setData(): 在被启动的Activity中,使用Intent对象的setData()方法设置回传的数据
finish(): 关闭当前Activity,并将控制权交给调用者Activity
onActivityResult(requestCode, resultCode, Intent):
在调用者Activity中,与startActivityForResult()方法成对的出现
参数:
requestCode, 与startActivityForResult()中requestCode一致;
resultCode, setResult()中的resultCode;
Intent,setResult()中返回的数据对象Intent
传递数据给被启动的Activity:
调用startActivityForResult(Intent, requestCode)方法前,借助Intent对象设置需传递的数据
intent.putExtra(key, value), 添加单个键值对
intent.putExtras(Bundle), 添加Bundle实例给Intent
Note: Bundle对象,包含一组键值对的字典对象
获取传递的数据:
被启动的Activity中获取传递数据,借助getIntent()方法
获取数据:
String : intent.getStringExtra(key),
int : intent.getIntExtra(key)
Bundle : intent.getExtras()
适应显示方向:
Android支持两种屏幕方向:纵向(Portrait)和横向(Landscape)
设备显示方向改变时,当前活动会自动在新方向上重绘视图,因为方向改变时,当前活动实际上先被销毁,再重新创建
调整大小和重新定位:
为了支持横向Landscape模式,在res文件夹下新创建名为layout-land的文件夹,并创建xml文件
控制Activity的方向:
a. 编程方式:使用Activity类的setRequestedOrientation()方法
b. 配置文件:AndroidManifest.xml文件中<activity />元素上使用android:screenOrientation属性来限制