Activity的生命周期 (7个)
从创建到销毁的过程:
onCreate() 第一次创建时执行 初始化Activity
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);
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);
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>