Intent界面跳转与传递数据

Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据。

intent可以激活Activity,服务,广播三类组件。

本博文讲的是显示意图激活Activity组件。所谓显示意图就是在activity的激活时,显示指出了需要激活的activity的名字。

一、Activity跳转

方法一
Intent intent = new Intent(A.this, B.class);  
startActivity(intent)

方法二
Intent intent = new Intent(); 
intent.setClass(A.this, B.class);
startActivity(intent);

实现从A跳转到B(A、B均继承自Activity)

二、传递数据

Activity A 传递数据

方法一
Intent intent = new Intent(); 
intent.setClass(A.this, B.class);
intent.putExtra("name", "xy");
intent.putExtra("age", 22);

startActivity(intent);

方法二
Intent intent = new Intent(A.this, B.class);  
Bundle bundle = new Bundle();
bundle.putString("name", "xy");
bundle.putInt("age", 22);

intent.putExtras(bundle); 
startActivity(intent);

Activity B 接收数据

// 获取参数1
Intent intent = this.getIntent(); 
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 22); // 缺省值为22

// 获取参数2
Bundle bundle = intent.getExtras();
String name2 = bundle.getString("name");
int age2 = bundle.getInt("age", 22);

两种获取参数方式均可,并不是和传参1,2方法一一对应

三、Activity返回值

跳转后前一个Activity已经被destroy了。如若要返回并显示数据,就必须将前一个Activity再次唤醒,同时调用某个方法来获取并显示数据。做法如下

1.从A页面跳转到B页面时不可使用startActivity()方法,而要使用startActivityForResult()方法

2.在A页面的Activity中,需要重写onActivityResult(int requestCode, int resultCode, Intent data)方法

Activity A

[java] view plaincopyprint?

  1. // 有返回值的Activity
  2. public void openNewActivity2(View v)
  3. {
  4. Intent intent = new Intent();
  5. intent.setClass(this.getApplicationContext(), OtherActivity2.class);
  6. intent.putExtra("name", "xy");
  7. intent.putExtra("age", 20);
  8. startActivityForResult(intent, 1);
  9. }
  10. @Override
  11. protected void onActivityResult(int requestCode, int resultCode, Intent data)
  12. {
  13. // requestCode用于区分业务
  14. // resultCode用于区分某种业务的执行情况
  15. if (1 == requestCode && RESULT_OK == resultCode)
  16. {
  17. String result = data.getStringExtra("result");
  18. Toast.makeText(this.getBaseContext(), result, Toast.LENGTH_SHORT).show();
  19. }
  20. else
  21. {
  22. Toast.makeText(this.getBaseContext(), "无返回值", Toast.LENGTH_SHORT).show();
  23. }
  24. }

Activity B

[java] view plaincopyprint?

  1. public void close(View v)
  2. {
  3. Intent intent = new Intent();
  4. intent.putExtra("result", "返回值");
  5. this.setResult(RESULT_OK, intent); // 设置结果数据
  6. this.finish(); // 关闭Activity
  7. }

四、总结

以上采用的意图intent均是显示意图。

时间: 2024-10-12 15:27:19

Intent界面跳转与传递数据的相关文章

多activity界面跳转并传递数据

1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:id="@+id/activity_main&quo

ios 页面跳转之间传递数据----通过delegate

主要参考了这篇博客http://mobile.51cto.com/iphone-284116.htm 主要用到了,两个类,一个delegate a类,调用b类,当b类执行之后,需要把一个数据传递给a类,a类把这个数据显示出来. 1.delegate,就这一个头文件就足够了.在类中去实现这个代理方法 #import <Foundation/Foundation.h> @protocolUIViewPassValueDelegate - (void)passValue:(NSString*)val

Activity跳转&amp;Bundle传递数据

Activity的跳转方式有两种: 1.startActivity(Intent intent),直接启动其他Activity btnChange = (Button)findViewById(R.id.btnChange); btnChange.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent

【Android】8.0 Intent向下一个活动传递数据、返回数据给上一个活动

1.0 Android是使用任务(Task)来管理活动的,活动就像栈一样堆放着在一起. 每个活动的生命周期最多可能会有四种状态: 1.1 运行状态 位于栈顶 1.2 暂停状态 不在栈顶但在界面上仍处于可见状态 1.3 停止状态 不位于栈顶,且在界面上不可见时 1.4 销毁状态 从返回栈中移除之后 2.0 Activity类定义了7个回调方法,覆盖了活动生命周期的每一个环节: 2.1 onCreate()  该方法最为常见了,活动一创建自动有,每个活动都会重写这个方法.  负责活动的初始化操作,比

iOS --- 通过openURL实现APP之间跳转并传递数据

在IOS中,实现一个应用启动另外一个应用,使用UIApplication的openURL:方法就可实现,这里以test跳到test02为例.(需要先创建这两个工程) 注册自定义URL协议(在test中) 首先被启动的应用需要向iPhone注册一个自定义URL协议.这是在info.plist文件进行的. 1. 右键,选择“Add Row” 2. Key值选择“URL types” 3. 打开“Item 0″,然后为该key增加一个URL identifier.可以是任何值,但建议用“反域名”(例如

Andoid Intent学习之在各个活动之间传递数据

Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件.通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求. 1.使用Intent向下一个活动传递数据 在activity_main.xml中添加一个Button <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

Intent传递数据

方式比较多,先看看代码,一会儿再总结. activity_main.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=&quo

android传递数据bundle封装传递map对象

android开发默认情况下,通过Bundle bundle=new Bundle();传递值是不能直接传递map对象的,解决办法: 第一步:封装自己的map,实现序列化即可 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /**  * 序列化map供Bundle传递map使用  * Created  on 13-12-9.  */ public class SerializableMap implements Serializable {     privat

[android]Intent跳转新的Activity可以传递数据过去

通过intent.putExra()来传递数据 新的Activity通过 Intent intent = getInten(); 例如 //Item单击事件,单击后跳转到新的Activyty,并显示完整的内容 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //获取当前Item的完整数据 Blog bg = blogList.get(position); String tile