1,Intent的中文意思是“意图,意向”,可以把它理解为不同组件之间通信的“媒介”或”信使“,由Intent来协助完成Android各个组件之间的通讯。
2,Intent实现页面之间的跳转有两种方式:
a:startActivity(intent);
说明:这种方式只能实现无返回结果的页面跳转
b:startActivityForResult(intent, requestCode);
说明:这种方式能实现有返回结果的页面跳转
在接收返回结果的页面需要实现的方法:onActivityResult(int requestCode, int resultCode, Intent data)
在返回结果的页面需要实现的方法:setResult(resultCode,date);
4,先创建两个布局文件firstactivity.xml和secondactivity.xml.
a:firstactivity.xml的代码:
<span style="font-size:18px;"><Button
android:id="@+id/buttont1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="第一种启动方式" />
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="第二种启动方式" />
<TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="把第二个页面回传的数据显示出来"/></span>
b:secondactivity.xml的代码:
<span style="font-size:18px;"><Button
android:id="@+id/button3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="返回结果" /></span>
5,创建两个class类FirstActivity和SecondActivity:
a:FirstActivity类:
<span style="font-size:18px;">public class FirstActivity extends Activity {
private Button bt1;
private Button bt2;
private TextView tView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.firstactivity);
// 设置文本框用来显示接收到的结果
tView = (TextView) findViewById(R.id.tv);
/*
* 通过点击button1实现页面之间的跳转 1,startActivity的方式来实现 2,初始化Intent
*/
bt1 = (Button) findViewById(R.id.buttont1);
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// 实例化intent
Intent intent = new Intent(FirstActivity.this,
SecondActivity.class);
startActivity(intent);
}
});
/*
* 通过点击button2实现页面之间的跳转 通过startActivityForResult来实现
*/
bt2 = (Button) findViewById(R.id.button2);
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// 实例化intent
Intent intent = new Intent(FirstActivity.this,
SecondActivity.class);
// 第二个参数是请求码,这里定义为1
startActivityForResult(intent, 1);
}
});
}
/*
* 通过startActivityForResult实现跳转时,需要接收返回数据的方法onActivityResult
* 第二个参数resultCode:第二个页面返回码第三个参数data:第二个页面返回的结果
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == 2) {
// 接收返回的结果
String content = data.getStringExtra("data");
// 把接收得到的内容显示在文本框内
tView.setText(content);
}
}
}</span>
b:SecondActivity类:
<span style="font-size:18px;">public class SecondActivity extends Activity {
private Button bt3;
// 设置要回传的数据
private String content = "你好!";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity);
// 通过设置点击Button3的事件,向第一个页面返回结果
bt3 = (Button) findViewById(R.id.button3);
bt3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// 实例化intent
Intent date = new Intent();
date.putExtra("date", content);
// 第一个参数为返回码,这里定义为2
setResult(2, date);
// 结束当前页面
finish();
}
});
}
}</span>
6,需要在AndroidMainfest.xml中声明自定义的类:
<span style="font-size:18px;"><activity
android:name="com.example.intent.FirstActivity"
android:label="@string/app_name" >
<intent-filter>
//以第一个页面显示
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.intent.SecondActivity">
</activity></span>