android > Intent 带参数跳转

本文介绍了一个关于Android应用程序内部不同组件之间如何通过Intent传递数据的具体实例。该实例展示了如何将包括登录结果、本地IP地址、设备IP地址、MAC地址、密码及端口号等信息打包到Bundle中,并通过Intent发送;同时,也介绍了接收端如何解析这些数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

Intent intent = new Intent();
Bundle band = new Bundle();


band.putString("loginResut", return_str);
band.putString("localIp", getDhc[1]);
band.putString("DeviceIp", UdpConn.getDevicePro(TouchlistData)[2]);
band.putString("DeviceMac", curMac);
band.putString("pwd", UdpConn.getDevicePro(TouchlistData)[0]);
band.putString("DevicePort", DefineConf.DEVICE_LOCAL_PORT+"");				
	
intent.putExtras(band);    
intent.setClass(LoginIndex.this, ContrlInfo.class);	
LoginIndex.this.startActivity(intent);

 

 

 

然后接收

Intent intent = getIntent();
loginResut = intent.getStringExtra("loginResut");
localIp = intent.getStringExtra("localIp");
DeviceIp = intent.getStringExtra("DeviceIp"); 
DeviceMac = intent.getStringExtra("DeviceMac"); 
pwd = intent.getStringExtra("pwd"); 
DevicePort = intent.getStringExtra("DevicePort"); 

 

 

 

 

<think>我们正在讨论Android开发中如何使用Intent传递数实现页面跳转。根据引用内容,我们可以总结出以下步骤:1.在当前Activity中创建一个Intent对象,指定当前Activity和目标Activity的类。2.使用Intent的putExtra方法添加要传递的数(键值对形式)。3.调用startActivity(intent)启动目标Activity。4.在目标Activity中,通过getIntent()获取传递过来的Intent对象,然后通过getXXXExtra方法(根据数据类型选择,如getStringExtra、getIntExtra等)获取数值。下面是一个具体的示例:假设有两个Activity:MainActivity(当前Activity)和SecondActivity(目标Activity)。我们要从MainActivity跳转到SecondActivity,并传递一个字符串和一个整数。在MainActivity中的跳转代码:```java//创建Intent对象,从MainActivity跳转到SecondActivityIntentintent=newIntent(MainActivity.this,SecondActivity.class);//添加intent.putExtra("name","张三");//字符串intent.putExtra("age",25);//整数数startActivity(intent);```在SecondActivity中获取数:```java//获取Intent对象Intentintent=getIntent();//获取传递的字符串数,如果不存在则使用默认值""Stringname=intent.getStringExtra("name");//获取传递的整数数,如果不存在则使用默认值0intage=intent.getIntExtra("age",0);```另外,如果需要传递复杂的数据类型,可以使用Bundle对象。Bundle可以看作是一个数据包,可以存放多个键值对。我们可以将数据放入Bundle,然后将Bundle放入Intent。使用Bundle传递多个数的示例:在MainActivity中:```javaIntentintent=newIntent(MainActivity.this,SecondActivity.class);Bundlebundle=newBundle();bundle.putString("name","李四");bundle.putInt("age",30);intent.putExtras(bundle);//将bundle放入intentstartActivity(intent);```在SecondActivity中获取Bundle:```javaIntentintent=getIntent();Bundlebundle=intent.getExtras();//获取bundleif(bundle!=null){Stringname=bundle.getString("name");intage=bundle.getInt("age",0);}```或者也可以直接通过Intent获取(因为Intent内部实际上也是通过Bundle来存储数据的):```javaStringname=intent.getStringExtra("name");intage=intent.getIntExtra("age",0);```注意:传递的数据类型必须是基本类型、字符串或者实现了Serializable或Parcelable接口的对象。对于自定义对象,需要实现Serializable或Parcelable接口。Parcelable是Android推荐的,因为效率更高。例如,传递一个实现了Serializable接口的对象:在MainActivity中:```javaMyObjectobj=newMyObject();//MyObject实现了Serializable接口intent.putExtra("myObject",obj);```在SecondActivity中:```javaMyObjectobj=(MyObject)intent.getSerializableExtra("myObject");```如果使用Parcelable,则需要在MyObject类中实现Parcelable接口,并重写相关方法。然后在传递和获取时使用putExtra和getParcelableExtra。在MainActivity中:```javaintent.putExtra("myObject",obj);//obj实现了Parcelable```在SecondActivity中:```javaMyObjectobj=intent.getParcelableExtra("myObject");```总结:Intent传递数实现页面跳转主要使用putExtra方法,支持基本数据类型和字符串,以及实现了Serializable或Parcelable接口的对象。对于多个数,也可以使用Bundle进行打包。根据引用[1][2][3]的内容,我们提供了上述实现方法。现在生成相关问题:</think>### Android Intent 传递数实现页面跳转Android 开发中,通过 `Intent` 传递数实现页面跳转是核心功能之一。以下是详细步骤: #### 1. **基础跳转数传递** ```java // 在当前Activity中创建Intent Intent intent = new Intent(CurrentActivity.this, TargetActivity.class); // 添加数(支持基本数据类型/String/数组等) intent.putExtra("username", "张三"); // 字符串 intent.putExtra("age", 25); // 整型 intent.putExtra("is_vip", true); // 布尔值 // 启动目标Activity startActivity(intent); ``` #### 2. **目标页面接收数** 在 `TargetActivity.java` 中: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 获取Intent对象 Intent intent = getIntent(); // 提取数(需指定默认值) String username = intent.getStringExtra("username"); int age = intent.getIntExtra("age", 0); // 0为默认值 boolean isVip = intent.getBooleanExtra("is_vip", false); } ``` #### 3. **传递复杂数据** **方法一:使用 `Bundle` 封装数据** ```java Bundle bundle = new Bundle(); bundle.putString("email", "zhangsan@example.com"); bundle.putDouble("balance", 128.50); Intent intent = new Intent(this, TargetActivity.class); intent.putExtras(bundle); // 附加Bundle到Intent startActivity(intent); ``` **方法二:传递可序列化对象** 对象需实现 `Serializable` 或 `Parcelable` 接口: ```java // 定义可序列化对象 public class User implements Serializable { private String name; private int id; // 构造方法/getter/setter省略 } // 传递对象 User user = new User("李四", 1001); intent.putExtra("user_data", user); ``` #### 4. **数传递限制与注意事项** - **数据类型限制**:支持基本类型、String、数组、`Bundle`、`Serializable`/`Parcelable` 对象 - **大小限制**:传输数据不宜超过 1MB(TransactionTooLargeException 风险)[^1] - **安全性**:避免传递敏感数据(建议使用共享存储或数据库) - **空值处理**:`getXXXExtra()` 方法需设置合理的默认值 #### 5. **最佳实践** - **键名常量化**:使用静态常量定义 Extra Key,避免拼写错误 ```java public class IntentKeys { public static final String KEY_USERNAME = "username"; } ``` - **数据验证**:在目标页面检查必要数是否存在 ```java if (!getIntent().hasExtra(IntentKeys.KEY_USERNAME)) { // 处理数缺失情况 } ``` [^1]: 引用[1]:android intent带参数,Android Studio 使用Intent实现页面的跳转带参数)。Intent intent=new Intent(SpendingActivity.this,ExpenseProcesActivity.class);//从SpendingActivity页面跳转至ExpenseProcesActivity页面 [^2]: 引用[2]:Android开发:使用Intent和Bundle实现页面跳转与信息传递。在Android中,页面跳转可以通过创建一个新的Intent对象来实现。Intent是一种用于在不同组件之间传递消息的机制 [^3]: 引用[3]:android intent实现activity之间跳转并传值,intent实现Activity之间跳转的各种传值。安卓开发-intent在Activity之间数据传递
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值