android两个activity之间传值
第二个Activity上有一个edittext和两个按钮,我只想把edittext里面的东西传给第一个activity,但是为什么两个按钮也会一块传过去呢?...
第二个Activity上有一个edittext和两个按钮,我只想把edittext里面的东西传给第一个activity,但是为什么两个按钮也会一块传过去呢?
展开
推荐于2016-07-05 · 知道合伙人软件行家
关注
展开全部
Android中activity之间传值是通过Intent来传递数据的。
Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给Android,Android就会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到网页浏览器的Activity来浏览网页。
传递数据的方式:
1.使用Intent转跳
Intent intent = new Intent(activity,目标Activity.class);
2.用Intent传递数据,例如:
intent.putExtra("name","张三");
注意, 这个name表示取值的key,后台是value
3.启动Activity startActivity(intent);
4.在目标Activity中获取这个值
Intent intent = getIntent();
String name = intent.getStringExtra("name");
Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给Android,Android就会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到网页浏览器的Activity来浏览网页。
传递数据的方式:
1.使用Intent转跳
Intent intent = new Intent(activity,目标Activity.class);
2.用Intent传递数据,例如:
intent.putExtra("name","张三");
注意, 这个name表示取值的key,后台是value
3.启动Activity startActivity(intent);
4.在目标Activity中获取这个值
Intent intent = getIntent();
String name = intent.getStringExtra("name");
展开全部
Activity之间是没有办法直接传递数据的。Android的设计原则是,用Intent在不同的Activity和进程之间进行通信,但是通常来讲,Intent中只能存入基本数据类型和系统默认支持的比如Uri之类的。那么对于用户自己定义的数据结构是无法直接用Intent来传送的,如果想要通过Intent来传递自定义数据,可以让数据结构实现Parcelable接口,这样就可以把数据放入Intent。但是Intent的传送效率也不是很高,特别是当传递一些如Bitmap的大数据,用Intent传递超过500K的Bitmap,就会造成Framework层的Java Binder挂掉,结果就是传递不成功。
这点可以算成是Android的一个弊端,没有很好的解决方案。能做到的就是尽量设计的时候注意,尽量让Activity之间共享基本数据类型。
Android本身的应用中也深受其害,可以看到有很多应用程序的源代码中的主要的类在三千行以上的不在少数,比如Browser中的BrowserActivity有四千多行;Mms中的ComposeMessageActivity也有四千多行,等等。为什么一个类会如此之大,就是因为它们是程序的主页面,是业务的核心逻辑所在,里面也控制着很多的其他的数据结构,而又无法与另外的Activity共享,所以就只能在一个Activity里面做所的事情。
这点可以算成是Android的一个弊端,没有很好的解决方案。能做到的就是尽量设计的时候注意,尽量让Activity之间共享基本数据类型。
Android本身的应用中也深受其害,可以看到有很多应用程序的源代码中的主要的类在三千行以上的不在少数,比如Browser中的BrowserActivity有四千多行;Mms中的ComposeMessageActivity也有四千多行,等等。为什么一个类会如此之大,就是因为它们是程序的主页面,是业务的核心逻辑所在,里面也控制着很多的其他的数据结构,而又无法与另外的Activity共享,所以就只能在一个Activity里面做所的事情。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
废话少说,看代码:
Intent intent=new Intent();
intent.setClass(SecondActivity.this,FirstActivity.class);
Bundle bundle=new Bundle();//new一个bundle对象,并将要传递的数据传入
bundle.putString("key", value);//从第二个activity传键值队给第一个activity,value为edittext里面的内容
intent.putExtras(bundle);//将bundle对象assign给intent,这样就可以实现参数传递给另一个activity
startActivity(intent);
SecondActivity.this.finish();
Intent intent=new Intent();
intent.setClass(SecondActivity.this,FirstActivity.class);
Bundle bundle=new Bundle();//new一个bundle对象,并将要传递的数据传入
bundle.putString("key", value);//从第二个activity传键值队给第一个activity,value为edittext里面的内容
intent.putExtras(bundle);//将bundle对象assign给intent,这样就可以实现参数传递给另一个activity
startActivity(intent);
SecondActivity.this.finish();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
...目测是布局的问题,跟传值无关
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是怎么传的?能发段代码看看么?一般Activity传值都是使用Bundle来进行绑定,然后跟Intent绑定进行传值的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询