You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Intent传递经纬度对象至Map Activity后变为null的问题求助

解决Intent传递对象时Map Activity接收为null的空指针问题

兄弟,我之前也踩过一模一样的坑!Intent传自定义对象后接收为null,大概率是这几个细节没做好,咱们一步步排查解决:

1. 先确认自定义客户对象是否实现序列化接口

Android里Intent传递自定义对象,必须让对象实现Serializable或者Parcelable接口——系统需要把对象序列化后才能通过Intent传递,没实现的话传过去自然是null。

举个简单的Serializable实现例子:

// 你的客户对象类
public class Customer implements Serializable {
    private double latitude;
    private double longitude;
    // 构造方法、getter/setter方法
    public Customer(double latitude, double longitude) {
        this.latitude = latitude;
        this.longitude = longitude;
    }
    // 省略getLatitude()、getLongitude()
}

如果是复杂对象,用Parcelable性能更好,但Serializable对简单场景更省心。

2. 核对Intent传递与接收的键名是否完全一致

很多时候就是键名大小写、拼写错了!比如弹窗里用"CUSTOMER_INFO",接收时写成"customer_info",直接就取不到值。

弹窗类(CustomerPupUp.java)传递代码示例:

// 假设你已经拿到了有效的customer对象
Customer customer = getSelectedCustomer(); // 你的获取逻辑
Intent mapIntent = new Intent(CustomerPupUp.this, MapActivity.class);
mapIntent.putExtra("SELECTED_CUSTOMER", customer); // 记好这个键名
startActivity(mapIntent);

地图Activity(MapActivity.java)接收代码示例:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
    
    // 键名必须和传递时完全一致!
    Customer receivedCustomer = (Customer) getIntent().getSerializableExtra("SELECTED_CUSTOMER");
    if (receivedCustomer != null) {
        // 拿到经纬度去Google Map标记
        double lat = receivedCustomer.getLatitude();
        double lng = receivedCustomer.getLongitude();
        // 执行地图标记逻辑
    } else {
        // 这里就是你碰到的null情况,先检查键名和序列化
    }
}

3. 确认启动Activity的上下文是否正确

如果你的弹窗是DialogFragment而非普通Activity,别直接用CustomerPupUp.this当上下文,要换成getActivity():

Intent mapIntent = new Intent(getActivity(), MapActivity.class);
mapIntent.putExtra("SELECTED_CUSTOMER", customer);
getActivity().startActivity(mapIntent);

4. 排查传递前对象本身是否为null

在弹窗里putExtra之前,先打个日志确认对象本身有效:

Log.d("CustomerPupUp", "准备传递的客户对象:" + customer);
if (customer != null) {
    Log.d("CustomerPupUp", "经纬度:" + customer.getLatitude() + "," + customer.getLongitude());
    // 再执行Intent传递
} else {
    Log.e("CustomerPupUp", "客户对象本身就是null!");
}

如果这里日志显示对象为null,那问题出在弹窗获取客户数据的环节,和Intent传递无关。

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:54:26