Activity(活动)是Android四大组件之一;它跟用户直接面对面交互。首先重要的一点是你的每一个活动都要在清单文件中注册。
Intent是Android程序中各个组件之间进行交互的一种重要方式;它不仅可以指明当前组件想要执行的动作,还可以在不同的组件之间传递数据。分为显示Intent和隐式Intent。
显示Intent代码如下:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
隐式Intent需要指定一系列更加抽象的action和category。
在清单文件中代码:
<activity android:name=".SecondActivity"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="com.gyq.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.gyq.activitytest.MY_CATEGORY" />
intent-filter>
activity>
FirstActivity中代码如下:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_first_button1:
Intent intent = new Intent("com.gyq.activitytest.ACTION_START");
intent.addCategory("com.gyq.activitytest.MY_CATEGORY");
startActivity(intent);
break;
}
}
隐式Intent不仅可以启动自己程序内的活动,还可以启动其他程序的活动,这使得Android多个应用程序之间的共享成为了可能;代码如下:
1,直接跳转到拨号界面,只要按拨打键就可以了。
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:555"));
startActivity(intent);
2,直接跳转到百度网页
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
向下一个活动传递数据:
1,FirstActivity.java中按钮点击事件中的代码,跳转到第二个界面:
String data = "亲爱的:你好么?";
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
//通过intent的将本界面的数据传递到第二个界面。
intent.putExtra("data",data);
startActivity(intent);
2,SecondActivity.java接收数据;
Intent intent = getIntent();
String content = intent.getStringExtra("data");
//content就是上个界面中data的内容。
Log.d(TAG, "onCreate: "+content);
返回数据给上一个活动:startAcitivityForResult()方法
1,活动一代码:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
String resultData = data.getStringExtra("result");
Log.d(TAG, "onActivityResult: "+resultData);
}
}
}
2,活动二代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Button btn2 = (Button)findViewById(R.id.btn_second_button2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//传递数据给上一个activity。
Intent intent = new Intent();
intent.putExtra("result","亲爱的:我很好。");
setResult(RESULT_OK,intent);
finish();
}
});
}
//按返回键可以销毁当前界面,然后将数据回传到第一个界面。
@Override
public void onBackPressed() {
//传递数据给上一个activity。
Intent intent = new Intent();
intent.putExtra("result","亲爱的:我很好。");
setResult(RESULT_OK,intent);
finish();
}