Android Intent实现页面跳转
什么是intent
intent可以理解为信使(意图)
由intent来协作完成android各个组件之间的通讯, 也可以说是实现页面与页面之间的跳转
intent实现页面之间的跳转
- startactivity(intent) //第一种方式启动
-
startactivityforresult(intent, requestcode); //第二种启动方式
onactivityresult(int requestcode, int resultcode, intent data)
setresult(resultcode, data);
第一种启动方式实现直接跳转,无返回值
第二种启动方式a页面->b页面, b页面也能回传到a页面数据
onactivityresult(int requestcode, int resultcode, intent data)
这个是 用来a页面接收b页面回传的数据用的
setresult(resultcode, data) 这个是用来b页面回传给a页面数据
首先创建一个项目
新建两个activity
然后再layout 里面新建两个页面布局 layout右键ànewàandroid xml file
随后,进行绑定,例如:
然后,配置清单文件androidmanifest.xml
然后,在activity_first 插入两个button 一个textview 分别用来第一个和第二个跳转方式, 以及数据回传,代码如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <button 8 android:id="@+id/bt_first" 9 android:layout_width="match_parent" 10 android:layout_height="wrap_content" 11 android:text="第一种启动方式" /> 12 13 <button 14 android:id="@+id/bt_second" 15 android:layout_width="match_parent" 16 android:layout_height="wrap_content" 17 android:text="第二种启动方式" /> 18 19 <textview 20 android:id="@+id/textview" 21 android:layout_width="match_parent" 22 android:layout_height="wrap_content" 23 android:text="把第二个页面回传的数据显示" /> 24 25 </linearlayout>
刚才提到了,实现跳转需要用到intent意图,代码很简单 清晰明了 我直接贴代码了
首先 firstactivity
1 package com.example.intentdemo; 2 3 import android.app.activity; 4 import android.content.intent; 5 import android.os.bundle; 6 import android.view.view; 7 import android.view.view.onclicklistener; 8 import android.widget.button; 9 import android.widget.textview; 10 11 public class firstactivity extends activity { 12 button bt_first, bt_second; 13 textview textview; 14 15 @override 16 protected void oncreate(bundle savedinstancestate) { 17 super.oncreate(savedinstancestate); 18 setcontentview(r.layout.activity_first); 19 20 initview(); 21 } 22 23 private void initview() { 24 // 关联控件 25 bt_first = (button) findviewbyid(r.id.bt_first); 26 bt_second = (button) findviewbyid(r.id.bt_second); 27 textview = (textview) findviewbyid(r.id.textview); 28 bt_first.setonclicklistener(new onclicklistener() { 29 30 @override 31 public void onclick(view arg0) { 32 // 第一种跳转,无数据返回跳转 33 intent intent = new intent(firstactivity.this, 34 secondactivity.class); 35 intent.putextra("content", "第一种跳转方式"); 36 startactivity(intent); 37 } 38 }); 39 bt_second.setonclicklistener(new onclicklistener() { 40 41 @override 42 public void onclick(view arg0) { 43 // 第二种方式,有数据返回跳转 44 intent intent = new intent(firstactivity.this, 45 secondactivity.class); 46 intent.putextra("content", "第二种跳转方式"); 47 48 /* 49 * 第一个参数是intent对象 第二个参数的请求的一个标识 50 */ 51 startactivityforresult(intent, 1); 52 } 53 }); 54 } 55 56 /* 57 * 通过startactivityforresult跳转,接收返回数据的方法 requestcode:请求的标识 58 * resultcode:第二个页面返回的标识 data:第二个页面回传的数据 59 */ 60 61 @override 62 protected void onactivityresult(int requestcode, int resultcode, intent data) { 63 super.onactivityresult(requestcode, resultcode, data); 64 if (requestcode == 1) { 65 if (resultcode == 1) { 66 string text = data.getstringextra("content"); 67 textview.settext(text); 68 } 69 } 70 } 71 }
secondactivity代码如下:
1 package com.example.intentdemo; 2 3 import android.app.activity; 4 import android.content.intent; 5 import android.os.bundle; 6 import android.view.view; 7 import android.view.view.onclicklistener; 8 import android.widget.button; 9 import android.widget.textview; 10 11 public class secondactivity extends activity { 12 textview textview; 13 button button; 14 @override 15 protected void oncreate(bundle savedinstancestate) { 16 super.oncreate(savedinstancestate); 17 setcontentview(r.layout.activity_second); 18 //获取第一个页面的意图 19 intent intent = getintent(); 20 21 button = (button) findviewbyid(r.id.button); 22 textview = (textview) findviewbyid(r.id.textview); 23 //接收第一个页面传送的数据 24 textview.settext(intent.getstringextra("content")); 25 button.setonclicklistener(new onclicklistener() { 26 27 @override 28 public void onclick(view arg0) { 29 setresult(1, new intent().putextra("content", "从第二个页面返回")); 30 //结束当前页面 31 finish(); 32 } 33 }); 34 } 35 }
这样就简单的实现了,
如果有不懂的可以在下面发,我看到会帮你解决,android其他问题也可以
上一篇: 最帅煤气灶!NVIDIA RTX 2060拆解图赏
下一篇: 过年回家抢票,让光猫自动重启的小脚本