首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在android中将二维数组作为意图传递给

如何在android中将二维数组作为意图传递给
EN

Stack Overflow用户
提问于 2014-04-25 21:14:50
回答 4查看 1.6K关注 0票数 2

我希望以相同的格式将以下数组传递给我的receiver类,并以相同的格式获取它,即该数组应该保持其结构。

代码语言:javascript
代码运行次数:0
运行
复制
 curDts= new String[][] {{"1","2","3"}, {}, {"4","5","6"}};

下面是我到目前为止已经尝试过的内容。

代码语言:javascript
代码运行次数:0
运行
复制
    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));
        }
EN

回答 4

Stack Overflow用户

发布于 2014-04-25 21:29:55

String[]是可序列化的对象和字符串,这意味着您可以简单地在intent intent.putExtra(key,serializableObject)中使用ready方法,而在您的接收方,您可以使用intent.getSerializableExtra(KEY);

如果这就是你要找的。

编辑的

要传递您的数据,请执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
    Object[] objArr = new Object[]{ new String[]{"2"} ,new String[]{"5"}};
    intent.putExtra("dates", objArr);

并找回它们:

代码语言:javascript
代码运行次数:0
运行
复制
    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]);
        }
    }

    }
};
票数 2
EN

Stack Overflow用户

发布于 2014-04-25 21:24:37

为此,一种方法是将较大的数组数组中的每个字符串数组编码为一个字符串,并通过Intent传递一个字符串数组。此字符串数组可由接收意图的活动解码。

我编写了一个可以对字符串数组进行编码/解码的类,可以在这里找到:https://gist.github.com/liangricha/10759438

或者,您可以查看序列化。

票数 0
EN

Stack Overflow用户

发布于 2014-04-25 21:25:15

您可以传递整数,也可以传递String[],因此:

代码语言:javascript
代码运行次数:0
运行
复制
int i = 0;
intent.putExtra("size", curDts.length);
for (String[] value : curDts) {
    intent.putExtra("item"+ i++, value);
}

要检索它,请执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
int size = intent.getIntExtra("size", 0);
String[][] curDts = new String[][size];
for (int i = 0; i < size; i++) {
    curDts[i] = intent.getStringArrayExtras('item" + i);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23294266

复制
相关文章

相似问题

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