当前位置: 代码迷 >> Android >> 初学者,请问一个bundle传值的有关问题
  详细解决方案

初学者,请问一个bundle传值的有关问题

热度:3   发布时间:2016-05-01 21:04:28.0
菜鸟,请教一个bundle传值的问题
我要从一个Activity传几个byte[]值,因为我传的值数量不定,所以我采取的循环的方式传值,跟踪显示每个buffer值都是不一样的,但是到另外一个Activity获取到的buffer1,buffer2...,,值都是最后一个获取到的buffer,比如我传了4个buffer,就是所有都是buffer4的值,请教一下代码哪里的问题,下面是代码。
传值Activity:
String bufferNum="";
while(isAlive)
{
in.read(buffer, 0, 24);
count++;
bufferNum="buffer"+count;
bundle.putString(bufferNum, buffer.toString());
if(in.available()==0)
{
isAlive=false;
bundle.putInt("count", count);
}
}


取值Activity:
String bufferNum="";
byte buffer[] = new byte[24];
Bundle bundle=getIntent().getExtras();
int count=bundle.getInt("count");
for(int num=1;num<=count;num++)
{
bufferNum="buffer"+num;
buffer=bundle.getByteArray(bufferNum);
}

------解决方案--------------------
for了几次都是用一块buffer啊?覆盖掉了吧
------解决方案--------------------
你直接传buf.toString,这样是错的,你可以打印出信息来看。
代码应该改成:

in.read(buf, 0, buf.length);
count++;
bufferNum = "buffer" + count;
StringBuffer sb = new StringBuffer();
for (int i = 0; i < buf.length; i++) {
sb.append(buf[i]);
}
bundle.putString(bufferNum, sb.toString());
if (in.available() == 0) {
isAlive = false;
bundle.putInt("count", count);
}




String num="";
String str="";
Bundle bundle=this.getIntent().getExtras();
int count=bundle.getInt("count");
for(int i=1;i<=count;i++){
num="buffer"+i;
str=bundle.getString(num);
Log.d("tag",num+" : "+str);
}



------解决方案--------------------
楼主把buffer定义到循环里面试试

Java code
String bufferNum="";while(isAlive){[color=#FF0000]byte buffer[] = new byte[24];[/color]in.read(buffer, 0, 24);count++;bufferNum="buffer"+count;bundle.putString(bufferNum, buffer.toString());if(in.available()==0){isAlive=false;bundle.putInt("count", count);}}
------解决方案--------------------
写值的时候别在循环外面new buffer,在循环里每次new一个出来,只能试试,我没看出来哪出错~~
  相关解决方案