两个activity之间传递数据用startActivityForResult方法。
2015-11-27 17:14
931 查看
package com.example.testactivityresquest; 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.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, Activityb.class); int[] nums = { 15, 15 }; intent.putExtra(Changliang.KEY, nums); //有别于startActivity,如果启动的其他Activity多了以后。相当于定一个特定KEY值,返回根据KEY值返回。 startActivityForResult(intent, Changliang.requestCode); } }); } //Activityb传回来的数据在这个方法中获取 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { int s = data.getIntExtra(Changliang.Activity_b_KEY, 1); Toast.makeText(getApplicationContext(), "传递两个数得到的和是:" + s, 1).show(); } }
package com.example.testactivityresquest; 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.Toast; public class Activityb extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activityb); Intent intent = this.getIntent(); int[] n = intent.getIntArrayExtra(Changliang.KEY); final int nums = n[0] + n[1]; Toast.makeText(this, n[0] + " " + n[1], 1).show(); Button btn = (Button) findViewById(R.id.button2); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent1 = new Intent(Activityb.this, MainActivity.class); intent1.putExtra(Changliang.Activity_b_KEY, nums); // 将数据根据特定键值的意图事件导入 Activityb.this.setResult(Changliang.requestCode, intent1); //关闭后返回主Activity Activityb.this.finish(); } }); } }
package com.example.testactivityresquest; public class Changliang { public static final String KEY="key"; public static final String Activity_b_KEY="key1"; public static final int requestCode=1987; }
xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff0000" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="88dp" android:text="启动Activityb" /> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ff00" android:orientation="vertical" > <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="返回Activity" /> </LinearLayout>
别忘在AndroidManifast中注册activityb。
运行效果图:
相关文章推荐
- mysql统计某一个数据库中有几张表
- Docker 删除镜像
- 23设计模式之外观模式(Facade)
- OFFICE模版路径excel 2007 win7系统路径
- hdu 5564 && bestcode 62 Clarke and digits
- 23设计模式之适配器(Adapter)
- 【Python】构造函数、析构函数与可变参数传递
- curl库移植,配置编译器和编译参数
- 数据传递 startactivityforresutl 加法
- Quartz.NET
- checkstyle-代码检查工具安装配置
- 23设计模式之桥接模式(Bridge)
- Hadoop基础
- nohup、&、setsid、fork和fg、bg究竟有啥区别?
- java如何获取MySql数据库的列名,类型等信息
- Java 中InputStream与Reader的区别
- shipyard 不显示本机容器--iptables selinux firewall
- IOS零碎
- AIDL实例:当服务端有新书到来时,就通知每一个已经申请提醒功能的用户
- leetcode之路051 N-Queens