0

2D 配列 [][] オブジェクトをインテント エクストラとして別のアクティビティに渡しましたが、その show error i can't be identifier は何をすればよいですか?

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

1 に答える 1

-1

Intent.putExtra は、次のドキュメント http://developer.android.com/reference/android/content/Intent.htmlに従って 2 次元配列を受け入れません。

Intent.putExtra のソース コードを確認しました。バンドル クラスを使用してデータを格納します。

http://developer.android.com/reference/android/os/Bundle.html

ここにIntent.javaのソースコードがあります

  1. Intent.java http://gitorious.org/android-eeepc/base/blobs/fda6fae156e31a287e3cfbf66e51ea1405cdf479/core/java/android/content/Intent.java
  2. Bundle.java https://github.com/android/platform_frameworks_base/blob/master/core/java/android/os/Bundle.java

Bundle.java は「HashMap」を使用してコンテンツを格納し、

私の知る限り、直接は不可能です

putParcelable メソッドを使用できます。2 次元配列の独自のクラス インスタンスを作成する必要があります。

1 つの迅速な解決策

String[] keys = createKeys(); 
String[] values = createValues(); 

(keys.length == values.length) 

bundle.putExtra("keys", keys); 
bundle.putExtra("values", values); 
于 2012-09-03T12:39:34.060 に答える