Android 组件Activity
Activity是一个独立的可以与用户交互的Android应用组件
功能:作为应用程序框架动态加载各种用户界面视图,实现底层消息传递等,它是一个功能强大的界面管理者,负责调度各种界面视图,实现Android应用与用户之间的交互。
Activity生命周期包括:从Activity创建到停止,需经历OnCreate()、onStart()、OnPause()、onStop()、onDestroy()等。
启动Activity方式:
启动同一个Application 的Activity
启动不同Application 的Activity
启动不同apk 下的Activity:
public class MainActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Uri uri = Uri.parse("http://www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}
Android系统提供的“浏览网页”Activity的源代码
Uri uri = Uri.parse("http://www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.baidu.com"));
startActivity(intent);
intent=new Intent();
intent.setAction(Intent.ACTION_VIEW);
uri=Uri.parse("http://www.baidu.com");
intent.setData(uri);
startActivity(intent);
启动同一应用程序中的其他Activity的方法。
Intent intent=new Intent();
Intent.setClass(MainActivity.this,otherActivity.class);
startActivity(intent);
多Activity交换数据
Activity的消息传递
Intent提供了多个Activity之间进行交互的方式,应用程序可通过startActivity方法指定相应的Intent对象来启动另外一个Activity。
Bundle
如果要传递自定义的数据时例如将当前Activity的运行状态传递给下一个Activity,可使用Bundle来协助完成。
Bundle对象可被理解成一个哈希表,该映射表建立了关键字(标识)与其值(传递的数据)的映射关系
通过Bundle类的putXXX(Key, Value)方法将数据封装到Bundle对象中,如putString(String key, String value)
通过Bundle的**getXXX(String key)**方法取得关键字对应的数据
使用Intent和Bundle在Activity间传递数据
“宿主Activity“端的流程
1)首先创建一个Intent和Bundle对象,其中Bundle用于存储传递的数据;
2)然后使用Bundle的putXXX方法输入要传递的数据;
3)将要传递的数据压入Intent中intent.putExtras(Bundle对象);
4)启动“随从Activity
Bundle data=new Bundle();
data.putString("username", user);
Intent intent=new Intent(MainActivity.this,SuccessActivity.class);
intent.putExtras(data);
startActivity(intent);
“随从Activity“端的流程
1)接收“宿主Activity“的Intent;
2) 传递获得传入的Bundle对象;
3) 使用Bundle的get方法获取要传递的数据
Intent intent=getIntent();
Bundle data=intent.getExtras();
String str=data.getString("username");
tv.setText("欢迎"+str+"使用本系统!");
Activity应用
实现Activities间的消息传递:
MainActivity通过Bundle绑定单选按钮值将当前被选中的单选按钮值传送SupplActivity
myintent.putExtras(mybundle);
/*将数据封装到Intent对象中,通过该Intent对象将数据传送给相应的Activity*/
MainActivity.this.startActivity(myintent);
MainActivity启动SupplActivity,并传递给SupplActivity包含RadioButton值的Intent对象,接着SupplActivity通过getIntent方法获取从MainActivity传过来的Intent
Intent myintent = this.getIntent();
//获取Activity传递的Intent
Bundle mybundle = myintent.getExtras();
//获取Intent的Bundle对象,该对象记录了传送的数据值}