我希望以相同的格式将以下数组传递给我的receiver
类,并以相同的格式获取它,即该数组应该保持其结构。
curDts= new String[][] {{"1","2","3"}, {}, {"4","5","6"}};
下面是我到目前为止已经尝试过的内容。
Intent intent = new Intent(this, AlarmReceiver.class);
for(int i = 0; i<curDts.length ; i++){
for(int j = 0; j<curDts[i].length; j++){
intent.putExtra("date"+i,"'"+curDts[i][j]+"',");
Log.v("sending","'"+curDts[i][j]+"',");
}
}
for(int i=0; i<12; i++){
Log.v("",""+arg1.getExtras().getString("date"+i));
}
发布于 2014-04-25 13:29:55
String[]是可序列化的对象和字符串,这意味着您可以简单地在intent intent.putExtra(key,serializableObject)
中使用ready方法,而在您的接收方,您可以使用intent.getSerializableExtra(KEY);
如果这就是你要找的。
编辑的
要传递您的数据,请执行以下操作:
Object[] objArr = new Object[]{ new String[]{"2"} ,new String[]{"5"}};
intent.putExtra("dates", objArr);
并找回它们:
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Object[] obj = (Object[]) intent.getSerializableExtra("dates");
if(obj != null){
for (int i = 0; i < obj.length; i++) {
String[] object = (String[])obj[i];
Log.d(getClass().getSimpleName(), "OBJ : " + object[0]);
}
}
}
};
发布于 2014-04-25 13:24:37
为此,一种方法是将较大的数组数组中的每个字符串数组编码为一个字符串,并通过Intent传递一个字符串数组。此字符串数组可由接收意图的活动解码。
我编写了一个可以对字符串数组进行编码/解码的类,可以在这里找到:https://gist.github.com/liangricha/10759438。
或者,您可以查看序列化。
发布于 2014-04-25 13:25:15
您可以传递整数,也可以传递String[]
,因此:
int i = 0;
intent.putExtra("size", curDts.length);
for (String[] value : curDts) {
intent.putExtra("item"+ i++, value);
}
要检索它,请执行以下操作:
int size = intent.getIntExtra("size", 0);
String[][] curDts = new String[][size];
for (int i = 0; i < size; i++) {
curDts[i] = intent.getStringArrayExtras('item" + i);
}
https://stackoverflow.com/questions/23294266
复制