Intent实现页面跳转

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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值