首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在包中传递字节数组将变为空。

在包中传递字节数组将变为空。
EN

Stack Overflow用户
提问于 2015-04-16 06:05:27
回答 2查看 1.3K关注 0票数 0

我试图将一个字节数组从活动A传递到活动B,但由于某种原因,该变量突然变为空。我一直在努力弄清楚到底是怎么回事,但我还没有找到解决办法,也许你可以帮我。这是我活动A的代码:

代码语言:javascript
复制
    @Override
public void respond( String desc_plato, byte[] imag_plato ){
        System.out.println("des plato: "+desc_plato);
        System.out.println("image plato: "+imag_plato);

        if( imag_plato != null )
        {
            System.out.println("HERE IMAG_PLATO IS NOT NULL");
        }

        Intent intentDetalle = new Intent( this, PlatosDetalle.class );
        intentDetalle.putExtra("desc_plato", desc_plato);
        intentDetalle.putExtra("imag_plato ", imag_plato);
        startActivity( intentDetalle );
    }
}

活动B守则:

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    // excluding common code here... then:
    System.out.println("PlatosDetalle onCreate");

    Bundle PlatosIntent = getIntent().getExtras();
    String desc_plato = PlatosIntent.getString("desc_plato");
    byte[] imagen_plato = PlatosIntent.getByteArray("imag_plato");
    // I GOT THIS CODE FROM ANOTHER ANSWER, TO CHECK KEYS ON INTENT
    /**************************************************/
    for (String key : PlatosIntent.keySet()) {
        Object value = PlatosIntent.get(key);
        System.out.println("BUNDLE KEYS:"+ String.format("%s %s\n", key,  
            value.toString()));
    }
    System.out.println( imagen_plato );
    /************************************************/


    if( imagen_plato == null )
    {
        System.out.println("HERE IMAGEN_PLATO IS NULL");
        finish();
    }
}

在活动B的代码中,即使在打印了for循环中的键->值之后,变量"imagen_plato“已经为空.

这是我的logCat,或者至少是我使用System.out.println所做的日志:

代码语言:javascript
复制
04-16 02:04:35.915: I/System.out(5072): des plato: Pizza especial para clientes vegetarianos
04-16 02:04:35.925: I/System.out(5072): image plato: [B@41a80170
04-16 02:04:35.925: I/System.out(5072): HERE IMAG_PLATO IS NOT NULL
04-16 02:04:35.955: I/Choreographer(5072): Skipped 132 frames!  The application may be doing too much work on its main thread.
04-16 02:04:36.015: I/System.out(5072): PlatosDetalle onCreate
04-16 02:04:36.015: I/System.out(5072): BUNDLE KEYS:desc_plato Pizza especial para clientes vegetarianos
04-16 02:04:36.015: I/System.out(5072): BUNDLE KEYS:imag_plato  [B@41757c48
04-16 02:04:36.015: I/System.out(5072): null
04-16 02:04:36.015: I/System.out(5072): HERE IMAGEN_PLATO IS NULL

任何帮助都很感谢,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-16 06:08:06

在此:

代码语言:javascript
复制
 intentDetalle.putExtra("imag_plato ", imag_plato);
                                   ^

使用imag_plato密钥名传递空间。使用带-out空格字符的键:

代码语言:javascript
复制
intentDetalle.putExtra("imag_plato", imag_plato);
票数 4
EN

Stack Overflow用户

发布于 2015-04-16 06:13:40

正如@ρяσѕρєя-k所指出的,使用适当的键来放置和获取字节数组。最好创建一些常量,并将它们作为键在代码中使用,这样您就不必每次都以文字形式键入键。这将有助于消除今后所有这类问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29666529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档