- 显式Intent穿梭
首先创建两个活动,及其布局文件。
活动自动注册完成。
Intent(,);第一个参数为启动活动的上下文,第二个为启动目标。
在通过startActivity();方法启动活动。
Button button1 = (Button) findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent =new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
}
});
- 隐式Intent
主要通过设置action和category来获得
在xml文件中的secondActivity标签中添加如下代码
<intent-filter>
<action android:name="com.example.activity.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.activitytest.MY_CATEGORY" />
</intent-filter>
只能指定一个action,但category可以有多个。
在FirstActivity.java中添加
public void onClick(View v){
Intent intent =new Intent("com.example.activity.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
startActivity(intent);
}
ps.Intent的相关属性待补充。
ps.隐式部分其他用法待补充。
活动传递数据(向下一个活动)
使用显式方法
利用Intent提供的putExtra(键,数据)方法。
1中关键代码如下
public void onClick(View v){
String data = "hello 2";
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("extra_data",data);
startActivity(intent);
}
在2中取出数据
getIntent()方法获取启动活动2的Intent。
getStringExtra()获取数据。
Log中显示。
Intent intent=getIntent();
String data=intent.getStringExtra("extra_data");
Log.d("SecondActivity",data);
活动中传递数据(向上一个活动)
- startActivityForResult(Intent,请求码);
在1中,利用startActvityForResult()方法。
public void onClick(View v){
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);
}
在活动2中注册点击事件。
点击事件中构建Intent,putExtra(,)传入数据。
setResult(处理结果,intent),专门返回数据。
finish();销毁2活动。
public void onClick(View v){
Intent intent=new Intent();
intent.putExtra("data_return","hello 1");
setResult(RESULT_OK,intent);
finish();
}
此时又要把重心3放在1上。
用onActivityResult(请求码,处理结果,intent数据)
首先switch检查请求码,当处理结果==RESULT_OK,获取data中的数据,Log.d()打印。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case 1:
if (resultCode==RESULT_OK){
String returnData=data.getStringExtra("data_return");
Log.d("FirstActivity",returnData);
}
break;
default:
}
}
- back方法
重写onBackPressed();
按下Back,可返回数据
@Override
public void onBackPressed() {
Intent intent=new Intent();
intent.putExtra("data_r","hello");
setResult(RESULT_OK,intent);
finish();
}