Android开发笔记之《Activity学习》

Android中的Activity是提供可视化用户界面,一个Android应用由多个Activity,多个Activity组成了Activity栈,当前活动的Activity处于栈顶。

使用Activity要继承Activity类。

Activity是有生命周期的,在说明文档中有一个生命周期说明图,我们可以看出Activity的生命周期过程:


Activity生命周期中有四种状态:

状态                                      描述

活动                        在屏幕的前面(即在Activity栈顶),有焦点并可见,对应上图Activity Running

暂停                        失去了焦点,但是它任然可见(如安装程序时的提示),对应上图onPause()

停止                        失去焦点,不可见(如跳转Activity),对应上图onStop()

销毁                        被系统或进程结束,对应上图onDestroy()


之前已经说过如何由一个Activity跳转到另一个Activity:

Intent intent = new Intent(MainActivity.this,OtherActivity.class);
startActivity(intent);

注意所有Activity都要在AndroidManifest.xml中注册才可以使用


那么怎么在Activity中传递数据呢?也是借助intent,另外,我们还需要用到Bundle对象,使用例子:

String name = "This is Test data";    //要传递的数据
Bundle data = new Bundle();    //建立一个Bundle对象,存储数据,这些数据使用键值对的形式传递的
Intent intent = new Intent(MainActivity.this,OtherActivity.class);  
data.putString("name",name);    //向Bundlie对象中放入一个键值名称为name,数据为name变量(即"This is Test data")
intent.putExtras(data);    //Bundle对象插入数据后,intent也要设置要传递哪个Bundle对象
startActivity(intent);

那么如何使用上一个Activity传送过来的数据呢?

我们要在新Activity的onCreate中建立一个intent,然后调用getExtras()获取上一个Activity传过来的Bundle,使用如下:

Intent intent = getIntent();    //获取Intent
Bundle b = intent.getExtras();    //从Intent中获取Bundle对象
String name = b.getString("name");    //获取刚刚传递过来的name的数据

有时我们需要启动Activity来获取返回来的数据,这时我们需要用startActivityForResult()来完成这个操作

在onActivityResult()中处理新Activity返回来的数据,例子如下:

//MainActivity中
private OnClickListener listener = new OnClickListener()    //处理传送给下一个Activity的数据
{
		
	@Override
	public void onClick(View v)
	{
		// TODO Auto-generated method stub
		String name = "This is Test data";
		Bundle b = new Bundle();
		b.putString("name", name);
		Intent intent = new Intent(MainActivity.this,OtherActivity.class);
		intent.putExtras(intent);
		startActivityForResult(intent, BIND_AUTO_CREATE);
	}
};
protected void onActivityResult(int requestCode, int resultCode, Intent data)    //处理返回来的数据
{
	Bundle b = data.getExtras();      
	String name = b.getString("name");
}
//OtherActivity
protected void onCreate(Bundle savedInstanceState)    //处理要返回去的数据
{
	String name = "This is Return data";
	Intent intent = getIntent();
	Bundle b = new Bundle();
	b.putString("name", name);
	intent.putExtras(b);
	this.setResult(RESULT_OK, intent);
	this.finish();
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值