Android多个Activity之间的页面跳转带参传递与返回
来源:互联网 发布:违规删除恢复权重淘宝 编辑:程序博客网 时间:2024/05/20 23:06
一.普通页面跳转
Activity之间进行跳转需要使用Intent类 Intent 意图
第一个Activity
<Button android:id="@+id/btn_open" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="开启新的Activity" /> <TextView android:id="@+id/tv_first" android:gravity="center" android:text="第一个Activity" android:layout_width="match_parent" android:layout_height="wrap_content" />
第二个Activity
<Button android:id="@+id/btn_back" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="返回第一个Activity" /> <TextView android:id="@+id/tv_second" android:gravity="center" android:text="第二个Activity" android:layout_width="match_parent" android:layout_height="wrap_content" />
第一个Activity的按钮点击事件
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_first);Button btn_open = (Button) findViewById(R.id.btn_open);btn_open.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//建立一个意图,参数为(当前的Activity类对象,需要开的的Activity类)Intent intent = new Intent(FirstActivity.this,SecondActivity.class);//启动意图startActivity(intent);}});}
最后别忘记了在AndroidManifest.xml文件中注册Activity
<activity android:name=".SecondActivity" >
养成习惯,在每次创建新的Activity时,就及时去AndroidManifest.xml注册
二.Activity带参跳转
带参跳转则需要使用 Intent 的 putExtra(键,值)方法来放入参数,然后在第二个Activity中使用 getIntent().get类型Extra(键)来取得值
带参跳转则需要使用 Intent 的 putExtra(键,值)方法来放入参数,然后在第二个Activity中使用 getIntent().get类型Extra(键)来取得值
第一个Activity按钮的点击事件
只比前面多了一行代码 intent.putExtra("key", "我是参数");
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_first);Button btn_open = (Button) findViewById(R.id.btn_open);btn_open.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//建立一个意图,参数为(当前的Activity类对象,需要开的的Activity类)Intent intent = new Intent(FirstActivity.this,SecondActivity.class);intent.putExtra("key", "我是参数");//启动意图startActivity(intent);}});}
第二个Activity中的java代码
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);TextView tv_second = (TextView) findViewById(R.id.tv_second);// 得到IntentIntent intent = getIntent();// 通过key得到值 值为字符串类型String value = intent.getStringExtra("key");// 在TextView上设置 值tv_second.setText(value);}
三.带参传递的参数还可以是对象。
传递对象必须保证对象实现序列化
新建一个User类并实现序列化 Serializable
public class User implements Serializable{/** * 序列化id,建议加上, */private static final long serialVersionUID = 1L;// 用户名private String username;// 密码private String password;public User() {}public User(String username, String password) {super();this.username = username;this.password = password;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
第一个Activity中
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_first);Button btn_open = (Button) findViewById(R.id.btn_open);btn_open.setOnClickListener(new OnClickListener() {// 得到User类,并赋值User user = new User("账号", "密码");@Overridepublic void onClick(View v) {// 建立一个意图,参数为(当前的Activity类对象,需要开的的Activity类)Intent intent = new Intent(FirstActivity.this, SecondActivity.class);// 放入需要传递的对象intent.putExtra("key", user);// 启动意图startActivity(intent);}});}
第二个Activity中
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);TextView tv_second = (TextView) findViewById(R.id.tv_second);// 得到IntentIntent intent = getIntent();// 通过key得到得到对象// getSerializableExtra得到序列化数据User user = (User) intent.getSerializableExtra("key");// 在TextView上设置 用户名和密码tv_second.setText(user.getUsername() + " " + user.getPassword());}
在传递对象的时候,重点是保证对象实现序列化 Serializable并使用getSerializableExtra得到序列化数据
四.Activity带参返回
启动新的Activity 使用startActivityForResult(intent,requestCode)
必须重写onActivityResult(request,result,data) 方法来获取返回数据启动
第一个Activity
public class FirstActivity extends Activity {// 定义请求码,不同界面的跳转请求码要求不同,为了识别是哪个控件传递数据private final static int sendUser = 1;private TextView tv_first;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_first);Button btn_open = (Button) findViewById(R.id.btn_open);tv_first = (TextView) findViewById(R.id.tv_first);btn_open.setOnClickListener(new OnClickListener() {// 得到User类,并赋值User user = new User("账号", "密码");@Overridepublic void onClick(View v) {// 建立一个意图,参数为(当前的Activity类对象,需要开的的Activity类)Intent intent = new Intent(FirstActivity.this, SecondActivity.class);// 放入需要传递的对象intent.putExtra("key", user);// 启动意图(意图,请求码(int)) 请求码最好使用 final static定义 方便识别startActivityForResult(intent, sendUser);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);// 如果请求码为 sendUser 返回码 为 RESULT_OK RESULT_OK为系统自定义的int值为 -1if (requestCode == sendUser && resultCode == RESULT_OK) {// 在TextView中设置返回信息tv_first.setText(data.getStringExtra("key"));}}}
第二个Activity
public class SecondActivity extends Activity {private Intent intent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);TextView tv_second = (TextView) findViewById(R.id.tv_second);intent = getIntent();// 通过key得到得到对象// getSerializableExtra得到序列化数据User user = (User) intent.getSerializableExtra("key");// 在TextView上设置 用户名和密码tv_second.setText(user.getUsername() + " " + user.getPassword());// 找到按钮,通过点击按钮返回第一个界面Button btn_back = (Button) findViewById(R.id.btn_back);// 点击事件btn_back.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 发送返回数据 key可自己定义,但前后必须一样intent.putExtra("key", "接收到数据了,现在通知第一个Activity");// RESULT_OK 系统定义的int 值 为-1setResult(RESULT_OK, intent);// 关闭当前 Activityfinish();}});}}参数传递与返回 需要注意前后的 键 相对应
1 0
- Android多个Activity之间的页面跳转带参传递与返回
- 多个Activity之间带数据跳转
- activity之间的跳转与数据传递
- android数据传递(二)之activity带返回值的跳转,模拟登陆注册
- android数据传递之activity带返回值的跳转,模拟登陆注册
- 【android】关于多个activity页面跳转,跳过中间页面返回前边页面传值
- Android-Activity页面之间的数据传递
- Android-Activity页面之间的数据传递
- 记android学习之路----Activity(4)----Activity之间的跳转与数据传递
- Android 多个activity之间的切换(跳转)
- Android 多个Activity之间的跳转 超级简单例子
- 实现2个Activity之间跳转及数据的传递
- 使用Intent对象来实现两个(或多个)Activity之间的跳转,并实现在Activity之间传递参数。
- 【Activity】多个Activity带返回值跳转_startActivityForResult_【场景】选择项利用Activity实现,不用popuwindow的情况
- 用Intent 对象实现两个(多个)Activity之间的跳转和参数传递
- android初步实现Activity之间的跳转和数据传递
- Android 之不同Activity间页面的跳转与传递参数
- android中Activity之间跳转信息传递
- react webpack 按需加载初试
- Android开发小工具以及小错误总结
- mysql删除重复记录,保存Id最小的一条
- keepalived+nginx+tomcat高可用(主从切换)以及灾难恢复
- 数据库第十七章
- Android多个Activity之间的页面跳转带参传递与返回
- jinkins在windows上的安装 配置C#编译
- poj1860 Currency Exchange bfs剪枝 / bellman-ford 单源最短路径 初学
- 在Ubuntu终端彻底删除软件的方法
- class文件转变为java源文件方法
- 远程访问Ubuntu 上resin 管理页面
- stm32通信接口
- YV12,I420,YUV420P的区别
- 条款3:绝对不要以多态方式处理数组