2012-01-09 29 views
0

我有關於將字符串數組作爲包中的額外字符傳遞的問題。當moduleType =「v」時,我寫了下面的代碼來存儲標題,信息和揚聲器。代碼使用該包將字符串數組放入PopulateData活動中,並將其傳遞給下一個活動,即DataList活動。我的代碼如下:爲什麼存儲在數組中的值在Android中以套接字顯示爲空的形式傳遞

PopulateData.java

for(int i = 0; i < moduleTypes.length; i++){ 
      String moduleType = moduleTypes[i]; 
      JSONObject jsonModule = new JSONObject(content[i]); 
      //Bundle[] bundle = new Bundle[jsonModule.length()]; 
      Log.i(TAG, "ModuleType = v " + (moduleType == "v")); 
      Log.i(TAG, "ModuleType = v " + moduleType.equals("v")); 
      Log.i(TAG, "ModuleType = " + moduleType); 
      Log.i(TAG, "ModuleType Length = " + moduleTypes.length); 
      if(moduleType.equals("v")){ 
       //String[] title = new String[jsonModule.length()]; 
       //String[] info = new String[jsonModule.length()]; 
       //String[] speaker = new String[jsonModule.length()]; 
       String[] videoTypes = dbAdapter.collectVideoTypeFromListTable(); 
       String[] title = new String[videoTypes.length]; 
       String[] info = new String[videoTypes.length]; 
       String[] speaker = new String[videoTypes.length]; 
       title[i] = jsonModule.getString("title"); 
       info[i] = jsonModule.getString("info"); 
       speaker[i] = jsonModule.getString("speaker"); 
       Log.i(TAG, "titleArray"); 
       Log.i(TAG,title[i]); 
       Log.i(TAG, "infoArray"); 
       Log.i(TAG,info[i]); 
       Log.i(TAG, "speakerArray"); 
       Log.i(TAG,speaker[i]); 

       bundle.putStringArray("titleArray", title); 
       bundle.putStringArray("infoArray", info); 
       bundle.putStringArray("speakerArray", speaker); 
       bundle.putString("date", strDate); 

      } 
      intent.putExtras(bundle); 

     } 

DataList.java

bundle = getIntent().getExtras(); 
     title = bundle.getStringArray("titleArray"); 
     Log.i(TAG, "Title Size="+String.valueOf(title.length)); 
     info = bundle.getStringArray("infoArray"); 
     Log.i(TAG, "Info Size="+String.valueOf(info.length)); 
     speaker = bundle.getStringArray("speakerArray"); 
     Log.i(TAG, "Speaker Size="+String.valueOf(speaker.length)); 
     date = bundle.getString("date"); 
     Log.i(TAG, "Bundle Size="+String.valueOf(bundle.size())); 
     Log.i(TAG, ""+title[0]); 
     //bundle.p 
     //title = bundle.getString("title"); 
     //info = bundle.getString("info"); 
     //speaker = bundle.getString("speaker"); 
     for(int i = 0; i < title.length; i++){ 
      Log.i(TAG, "title["+i+"]"+title[i]); 
      Log.i(TAG, "info["+i+"]"+info[i]); 
      Log.i(TAG, "speaker["+i+"]"+speaker[i]); 
      Log.i(TAG, date); 
      Content content = new Content(title[i], info[i], speaker[i], date); 
      contentList.add(content); 
     } 

DDMS:

01-09 18:53:04.305: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.305: INFO/PopulateData(435): ModuleType = v true 
01-09 18:53:04.305: INFO/PopulateData(435): ModuleType = v 
01-09 18:53:04.305: INFO/PopulateData(435): ModuleType Length = 9 
01-09 18:53:04.315: INFO/DronaDBAdapter(435): Type: v 
01-09 18:53:04.315: INFO/DronaDBAdapter(435): Type: v 
01-09 18:53:04.315: INFO/DronaDBAdapter(435): Type: v 
01-09 18:53:04.325: INFO/PopulateData(435): titleArray 
01-09 18:53:04.325: INFO/PopulateData(435): Capital Budgeting 
01-09 18:53:04.325: INFO/PopulateData(435): infoArray 
01-09 18:53:04.325: INFO/PopulateData(435): Bhaavesh bhai will give full to training of Capital budgeting to team deltecs. All the best for him. 
01-09 18:53:04.325: INFO/PopulateData(435): speakerArray 
01-09 18:53:04.325: INFO/PopulateData(435): Bhaavesh Bhai 
01-09 18:53:04.325: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.325: INFO/PopulateData(435): ModuleType = v true 
01-09 18:53:04.335: INFO/PopulateData(435): ModuleType = v 
01-09 18:53:04.335: INFO/PopulateData(435): ModuleType Length = 9 
01-09 18:53:04.345: INFO/DronaDBAdapter(435): Type: v 
01-09 18:53:04.345: INFO/DronaDBAdapter(435): Type: v 
01-09 18:53:04.345: INFO/DronaDBAdapter(435): Type: v 
01-09 18:53:04.345: INFO/PopulateData(435): titleArray 
01-09 18:53:04.345: INFO/PopulateData(435): Nixon Cameras 
01-09 18:53:04.345: INFO/PopulateData(435): infoArray 
01-09 18:53:04.355: INFO/PopulateData(435): Nixon India is a leading camera manufacters in India. 
01-09 18:53:04.355: INFO/PopulateData(435): speakerArray 
01-09 18:53:04.355: INFO/PopulateData(435): Nixon India 
01-09 18:53:04.355: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.365: INFO/PopulateData(435): ModuleType = v true 
01-09 18:53:04.365: INFO/PopulateData(435): ModuleType = v 
01-09 18:53:04.365: INFO/PopulateData(435): ModuleType Length = 9 
01-09 18:53:04.375: INFO/DronaDBAdapter(435): Type: v 
01-09 18:53:04.375: INFO/DronaDBAdapter(435): Type: v 
01-09 18:53:04.375: INFO/DronaDBAdapter(435): Type: v 
01-09 18:53:04.385: INFO/PopulateData(435): titleArray 
01-09 18:53:04.385: INFO/PopulateData(435): Nixon Cameras 
01-09 18:53:04.385: INFO/PopulateData(435): infoArray 
01-09 18:53:04.385: INFO/PopulateData(435): Nixon India is a leading camera manufacters in India. 
01-09 18:53:04.385: INFO/PopulateData(435): speakerArray 
01-09 18:53:04.395: INFO/PopulateData(435): Nixon India 
01-09 18:53:04.395: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.395: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.395: INFO/PopulateData(435): ModuleType = n 
01-09 18:53:04.405: INFO/PopulateData(435): ModuleType Length = 9 
01-09 18:53:04.405: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.405: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.415: INFO/PopulateData(435): ModuleType = n 
01-09 18:53:04.415: INFO/PopulateData(435): ModuleType Length = 9 
01-09 18:53:04.415: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.415: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.425: INFO/PopulateData(435): ModuleType = n 
01-09 18:53:04.425: INFO/PopulateData(435): ModuleType Length = 9 
01-09 18:53:04.425: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.425: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.435: INFO/PopulateData(435): ModuleType = e 
01-09 18:53:04.435: INFO/PopulateData(435): ModuleType Length = 9 
01-09 18:53:04.445: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.445: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.445: INFO/PopulateData(435): ModuleType = q 
01-09 18:53:04.445: INFO/PopulateData(435): ModuleType Length = 9 
01-09 18:53:04.455: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.455: INFO/PopulateData(435): ModuleType = v false 
01-09 18:53:04.455: INFO/PopulateData(435): ModuleType = s 
01-09 18:53:04.465: INFO/PopulateData(435): ModuleType Length = 9 
01-09 18:53:04.465: INFO/ActivityManager(59): Starting activity: Intent { cmp=com.drona.app/.DataList (has extras) } 
01-09 18:53:04.545: INFO/DataList(435): Title Size=3 
01-09 18:53:04.545: INFO/DataList(435): Info Size=3 
01-09 18:53:04.545: INFO/DataList(435): Speaker Size=3 
01-09 18:53:04.545: INFO/DataList(435): Bundle Size=4 
01-09 18:53:04.555: INFO/DataList(435): null 
01-09 18:53:04.555: INFO/DataList(435): title[0]null 
01-09 18:53:04.555: INFO/DataList(435): info[0]null 
01-09 18:53:04.555: INFO/DataList(435): speaker[0]null 
01-09 18:53:04.565: INFO/DataList(435): Jan 09 
01-09 18:53:04.565: INFO/DataList(435): title[1]null 
01-09 18:53:04.565: INFO/DataList(435): info[1]null 
01-09 18:53:04.565: INFO/DataList(435): speaker[1]null 
01-09 18:53:04.565: INFO/DataList(435): Jan 09 
01-09 18:53:04.565: INFO/DataList(435): title[2]Nixon Cameras 
01-09 18:53:04.575: INFO/DataList(435): info[2]Nixon India is a leading camera manufacters in India. 
01-09 18:53:04.575: INFO/DataList(435): speaker[2]Nixon India 
01-09 18:53:04.575: INFO/DataList(435): Jan 09 

由於出現在DDMS中,我作爲數據包在第一個活動中傳遞的值正在顯示正確,但是當它們轉到下一個活動時,它們將變爲空。爲什麼這樣?我做了什麼錯了嗎?

+0

的其他活動也需要傳遞的花絮。 – 2012-01-09 13:51:55

+0

看來你正在覆蓋每個循環迭代的現有額外。如果我正確地從日誌中理解了你的問題,你應該首先將String []數組放在for -loop中,然後纔將它們作爲字符串數組extras。 – harism 2012-01-09 13:56:25

回答

2

這個代碼塊可能是你的問題:

bundle.putStringArray("titleArray", title); 
bundle.putStringArray("infoArray", info); 
bundle.putStringArray("speakerArray", speaker); 
bundle.putString("date", strDate); 

每次經過循環,要更換以前的值,因爲每一個捆綁值是有方向性的,以在相同的密鑰迭代。你可以繞過這幾個方面:

  • 使用數組的數組
  • 附加一個數字每年年底,並把和跟蹤總數應在捆綁,所以你可知道所有這些信息多長時間循環
  • 投入某種parcelable豆,然後每個包裹豆那些在你的PopulateData
1

您還需要將信息發送到下一個活動視圖包。數據只會發送到它發送的活動。

我認爲這樣可以,因爲它只是簡單的鍵值對而已。 事情是這樣的..

// my list of names, icon locations 
Map<String, String> info = new HashMap<String, String>(); 
nameIcons.put("titleArray", title); 
nameIcons.put("infoArray", info); 

然後將它們存儲在共享偏好。

SharedPreferences keyValues = getContext().getSharedPreferences("info_preferences"), Context.MODE_PRIVATE); 
SharedPreferences.Editor keyValuesEditor = keyValues.edit(); 

for (String s : info.keySet()) { 

keyValuesEditor.pustString(s, info.get(s)); 
} 
相關問題