Intent可以理解为信使(意图)
由Intent来协助完成Android各个组件之间的通信。
Intent实现页面之间的跳转有两种方式
1、 startActivity(intent)
2、 startActivityForResult(intent,requestCode);
onActivityResult(intrequestCode,int resultCode,Intent data)
setResult(resultCode,data)
下面我们看具体代码示例
首先新建了两个XML的显示文件
第一个界面中有两个按钮,分别用于实现两种方式跳转,同时还有一个TextView用于显示第二个页面回传的信息。第二个页面中只有一个按钮,用户回调到第一个页面。下面分别看这两个的activity
/**
*
*/
package com.example.intentdemo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class FActivity extends Activity {
private Button bt1;
private Button bt2;
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.factivity);
bt1 = (Button) findViewById(R.id.button1_first);
//通过点击bt1实现页面跳转,通过startActivity方式实现
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//初始化Intent
//第一个参数上下文对象
//第二个参数,目标文件
Intent intent = new Intent(FActivity.this, SActivity.class);
startActivity(intent);
}
});
bt2 = (Button) findViewById(R.id.button2_second);
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(FActivity.this, SActivity.class);
//第一个参数是intent对象
//第二个参数是一个请求的标识
startActivityForResult(intent, 1);
}
});
}
/*
* 通过startActivityForResult跳转,接受返回数据的方法
* requestCode:请求的标识
* resultCode:第二个页面返回的标识
* data:是第二个页面回传的数据
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
tv = (TextView) findViewById(R.id.textView1);
if(requestCode==1&&resultCode==1){
tv.setText(data.getStringExtra("data"));
}
}
}
然后看第二个页面相关的activity
package com.example.intentdemo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SActivity extends Activity {
private Button btn;
private String content = "你好!";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sactivity);
/*
* 第二个页面给第一个页面回传相应的数据
* 回传第一个页面实际是一个Intent对象
*/
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent data = new Intent();
data.putExtra("data", content);
setResult(1, data);
finish();
}
});
}
}