ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android – 在Intent中设置后,Bundle为null

2019-10-02 12:24:26  阅读:294  来源: 互联网

标签:android null bundle android-intent


我知道有些问题如下:
android-intent-bundle-always-nullintent-bundle-returns-null-every-time但没有正确的答案.

在我的活动1中:

public void goToMapView(Info info) {
    Intent intent = new Intent(getApplicationContext(), MapViewActivity.class);
    //intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    intent.putExtra("asdf", true);
    info.write(intent);
    startActivity(intent);
}

在信息中:

public void write(Intent intent) {
    Bundle b = new Bundle();
    b.putInt(AppConstants.ID_KEY, id);
    ... //many other attributes
    intent.putExtra(AppConstants.BUNDLE_NAME, b);
}
public static Info read(Bundle bundle) {
    Info info = new Info();
    info.setId(bundle.getInt(AppConstants.ID_KEY));
    ... //many other attributes
    return info;
}

在MapViewActivity(活动2)中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map_view);

    Bundle extras = getIntent().getBundleExtra(AppConstants.BUNDLE_NAME);
    info = Info.read(extras);
    ...
}

问题是extras bundle总是为null.我调试了它并且Intent(intent = getIntent())将所有字段都设置为null,除了一个指示它是什么类(MapViewActivity).

我也尝试通过intent.putExtras(b)使用相同的效果来放置包.
intent.putExtra(“asdf”,true)仅用于调试原因 – 我也无法获取此数据(因为getIntent()几乎所有字段都设置为null).

编辑

以下答案是正确和有效的.这是我的错.我没有正确地将我的包传递给新意图.

解决方法:

我不确定“Info”是什么用,但我建议在涉及其他数据对象之前先将数据从一个活动传递到另一个活动.

活动1

    Intent intent = new Intent(Activity1.this, Activity2.class);
    intent.putExtra("asdf", true);
    info.write(intent);
    startActivity(intent);

活性2

    Bundle bundle = getIntent.getExtras();
    if (bundle!=null) {
        if(bundle.containsKey("asdf") {
            boolean asdf = bundle.getBooleanExtra("asdf");
            Log.i("Activity2 Log", "asdf:"+String.valueOf(asdf));
        }
    } else {
        Log.i("Activity2 Log", "asdf is null");

    }

标签:android,null,bundle,android-intent
来源: https://codeday.me/bug/20191002/1843150.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有