Activity的生命周期及传值

本文详细介绍了Android中Activity的生命周期,包括七个关键阶段及其调用顺序。同时,文章还提供了Activity间数据传递的方法,如通过Intent、静态成员及全局变量等方式进行数据交换。
Activity的生命周期  (7个)  
  从创建到销毁的过程:
  onCreate() 第一次创建时执行 初始化Activity
  onStart() 显示窗口时执行          显示Activity
  onResume()      用户获取焦点时执行 与用户交互
  onPause()       用户失去焦点时执行 停止与用户交换
  onStop()        关闭窗口时执行  关闭Activity
  onRestart()     重新显示窗口时执行      再次显示Activity
  onDestroy()     销毁时执行  销毁Activity

例如:启动MainActivity时执行的生命周期
           M:onCreate -- M:onStart -- M:onResume

          退出MainActivity时执行的生命周期
          M:onPause -- M:onStop -- M:onDestro

          从MainActivity启动InfoActivity时执行的生命周期
          M:onPause -- I:onCreate -- I:onStart --I:onResume -- M:onStop
          对话框 M:onPause -- I:onCreate -- I:onStart --I:onResume

          当InfoActivity 退出时执行的生命周期   
          I:onPause -- M:onRestart -- M:onStart -- M:onResume -- I:onStop -- I:onDestroy
          对话框 I:onPause -- M:onResume -- I:onStop -- I:onDestroy
传值
两个Activity之间的传值

 A  --->  B   启动B页面    通过 意图传值, 静态成员传值, 全局变量传值

 A  --->  B  ---> A     启动B页面  将数据回传给A页面

 1, 通过Intent意图传值

    方式一:

  A  Intent intent = new Intent(MainActivity.this, InfoActivity.class);
  
     intent.putExtra(key,value);

     startActivity(intent);

  B  Intent intent = getIntent();

     intent.getStringExtra(key);

    方式二:

  A   Intent intent = new Intent(MainActivity.this, InfoActivity.class);

      Bundle bundle = new Bundle();

      bundle.putString(key,value);

      intent.putExtras(Bundle bundle);

      startActivity(intent);

  B   Intent intent = getIntent();

      Bundle bundle = intent.getExtras();

      String sex = bundle.getString(key);
 
 2, 静态成员传值(不建议使用)

  A  声明一个公共的静态成员, 在合适的位置存入数据

  B  直接访问A页面中静态成员, 读取相应的内容

 3, 全局变量传值 -- Application (用户帐号)

  1, 创建Application的子类, 并且在类中声明全局变量

  2, 在清单文件中<application/>中, 通过android:name="" 引入

  A   在合适的位置存入数据

  B   取出数据

 4, 回传数据
 
  A   startActivityForResult(intent,requestCode);

  B   setResult(resultCode, Intent data);

  A   重写onActivityResult(requestCode,resultCode,data);

实例:选取头像图片
页面A:
public class MainActivity extends Activity {
	private ImageView iv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		iv = (ImageView) findViewById(R.id.iv);
	}

	public void show(View v) {
		Intent intent = new Intent(MainActivity.this, InfoActivity.class);
		// 带返回数据启动
		startActivityForResult(intent, 1);
	}
	/**
	 * 获取回传的数据
	 */
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);

		if (requestCode == 1 && resultCode == RESULT_OK) {
			// 为图片空间设置内容 参数一key 参数二 默认值
			int ImageID = data.getIntExtra("imageID", R.drawable.ic_launcher);
			iv.setImageResource(ImageID);
		}
	}
}
<ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:src="@drawable/ic_launcher" />

    <Button
        android:id="@+id/b"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/iv"
        android:onClick="show"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:text="选取头像" />
页面B:
public class InfoActivity extends Activity {

	private RadioGroup rg;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.anfoactivity);
		rg = (RadioGroup) findViewById(R.id.rg);
	}
	// 点击按钮将图片的ID回传给Mainactivity页面
	public void submit(View v) {
		// 得到当前选中的RadioButton的id
		int checkedID = rg.getCheckedRadioButtonId();
		int imageID = R.drawable.ic_launcher;
		switch (checkedID) {
		case R.id.rb1:
			imageID = R.drawable.ic_launcher;
			break;
		case R.id.rb2:
			imageID = R.drawable.ic_launcher;
			break;
		case R.id.rb3:
			imageID = R.drawable.ic_launcher;
			break;
		case R.id.rb4:
			imageID = R.drawable.aa;
			break;
		case R.id.rb5:
			imageID = R.drawable.ic_launcher;
			break;
		case R.id.rb6:
			imageID = R.drawable.ic_launcher;
			break;
		}
		// 参数一返回码 参数二 intent意图对象
		Intent data = new Intent();
		data.putExtra("imageID", imageID);
		setResult(RESULT_OK, data);
		// 关闭当前页面
		finish();
	}
}

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请选择你喜欢的头像" />
     <RadioGroup 
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="vertical"
         android:id="@+id/rg">
         <RadioButton 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/rb1"
             android:text="头像一"
             android:drawableRight="@drawable/ic_launcher"
             />
         <RadioButton 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/rb2"
             android:text="头像二"
             android:drawableRight="@drawable/ic_launcher"
             />
         <RadioButton 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/rb3"
             android:text="头像三"
             android:drawableRight="@drawable/ic_launcher"
             />
         <RadioButton 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/rb4"
             android:text="头像四"
             android:drawableRight="@drawable/aa"
             />
         <RadioButton 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/rb5"
             android:text="头像五"
             android:drawableRight="@drawable/ic_launcher"
             />
         <RadioButton 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/rb6"
             android:text="头像六"
             android:drawableRight="@drawable/ic_launcher"
             />
         <Button 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center_horizontal"
             android:text="提交"
             android:layout_marginTop="20dp"
             android:onClick="submit"
             />
     </RadioGroup>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值