我将2d array [] []对象作为另一个活动的额外意图传递,但是它的显示错误我无法识别我该怎么办?
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null)
{
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
str += "SMS from " + msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString();
str += "\n";
String[][] xmlResponse2= null;
String[] test = str.split("\n");
xmlResponse2= new String[0][test.length];
for (int i = 0; i < test.length; i++) {
xmlResponse2[0][i]=test[i];
}
Intent l = new Intent(context,AgAppMenu.class);
l.putExtra("msg",xmlResponse2[0][i]);
l.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(l);
答案 0 :(得分:-1)
根据以下文档,Intent.putExtra不接受2维数组 http://developer.android.com/reference/android/content/Intent.html
我检查了Intent.putExtra的源代码,它使用Bundle Class来存储数据
http://developer.android.com/reference/android/os/Bundle.html
这是Intent.java的源代码
Bundle.java使用“HashMap”来存储内容,
据我所知,这不可能直接
你可以使用putParcelable方法,你需要创建自己的类instanceof 2维数组。
一个快速解决方案
String[] keys = createKeys();
String[] values = createValues();
(keys.length == values.length)
bundle.putExtra("keys", keys);
bundle.putExtra("values", values);