如何通过二维数组作为Android的一个意图数组、意图、Android

2023-09-03 23:02:30 作者:久遇

我想下面的数组传递给我的接收类相同的格式,并把它拿来相同的格式,即数组应保持其结构。

  curDts =新的String [] [] {{1,2,3},{},{4,5,6 }};
 

以下是我试过到目前为止,

 意向意图=新的意图(这一点,AlarmReceiver.class);
            的for(int i = 0; I< curDts.length;我++){
                对于(INT J = 0; J< curDts [I] .length; J ++){
                    intent.putExtra(日期+ I,+ curDts [I] [J] +');
                    Log.v(发送,'+ curDts [I] [j]的+',);
                }
            }

    的for(int i = 0; I< 12;我++){
        Log.v(,+ arg1.getExtras()的getString(日期+ I));
        }
 

解决方案

的String []是序列化的对象,以及字符串[] [],这意味着你可以简单地使用现成方法的意图意图.putExtra(键,serializableObject),并在您接收端,你可以说 intent.getSerializableExtra(KEY);

android学习札记第2章之二维数组和初识面向对象

如果您一直在寻找。什么

编辑

要通过你的数据确实是这样的:

  [对象] objArr =新的对象[] {新的String [] {2},新的String [] {5}};
    intent.putExtra(日期,objArr);
 

和中检索它们:

 私人的BroadcastReceiver mBroadcastReceiver =新的BroadcastReceiver(){
    @覆盖
    公共无效的onReceive(上下文的背景下,意图意图){

    [对象] OBJ =(对象[])intent.getSerializableExtra(日期);
    如果(OBJ!= NULL){
        的for(int i = 0; I< obj.length;我++){
            的String []对象=(字符串[])目标文件[I]
            Log.d(的getClass()getSimpleName(),OBJ:+反对[0]);
        }
    }

    }
};
 

I want to pass the following array to my receiver class in the same format and fetch it in same format i.e the array should maintain its structure.

 curDts= new String[][] {{"1","2","3"}, {}, {"4","5","6"}};

Following is what I have tried so far,

    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));
        }

解决方案

String[] are serializable objects as well as String[][] that means you can simply use the ready method in the intent intent.putExtra(key,serializableObject) , and on your receiver side you could say intent.getSerializableExtra(KEY);

if that what you was looking for.

Edited

To pass your data do something like :

    Object[] objArr = new Object[]{ new String[]{"2"} ,new String[]{"5"}};
    intent.putExtra("dates", objArr);

and to retreive them :

    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]);
        }
    }

    }
};