2013-08-06 82 views
0

所以我有我的主要活動,它擁有一個列表視圖,並有一個包含列表中的所有數據的地圖。點擊某個項目後,您將進入詳細信息顯示。當我按下返回按鈕從細節活動回到主要活動時,如果我設置了一箇中斷點,我的映射鍵仍然完好無損,但對象中的所有字符串都是「」,整數是-1。這裏是我的主要活動是這樣的:返回的活動缺少數據

public class MainActivity extends Activity { 
    private Map<String, Stunt> stunts = new LinkedHashMap<String, Stunt>(); 
    private StuntsDao stuntsDao; 
    private ListAdapter listAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     stuntsDao = new StuntsDao(getApplicationContext());  

     stunts = stuntsDao.getAllStunts(); 

     listAdapter = new ListAdapter(this, R.layout.list_layout, new ArrayList<Stunt>(stunts.values())); 
     ListView listView = (ListView)findViewById(R.id.listView); 

     listView.setAdapter(listAdapter); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       String stuntName = (String)((ViewHolder)view.getTag()).stuntName.getText(); 
       Intent myIntent = new Intent(getApplicationContext(), StuntDetails.class); 
       getStuntDetailsIfNeeded(stuntName); 
       Stunt stunt = stunts.get(stuntName); 
       myIntent.putExtra("STUNT", stunt); 
       startActivity(myIntent); 
      } 
     }); 
    } 
... 

} 

在我的地圖中的對象爲什麼會基本上是空的?

+0

它可能與該onCreate()沒有被調用,當你點擊回來? – VM4

+0

那麼這就是我認爲所以我實現了onSaveInstanceState和onRestoreInstanceState方法,並沒有幫助。但是,是的,onRestoreInstanceSave和onCreate方法不會在返回時調用。 –

+0

這些方法適用於方向更改時。 – VM4

回答

1

當您單擊後,onCreate()不會被調用。您需要在onStart或onResume中再次啓動您的數據。請參閱:http://developer.android.com/training/basics/activity-lifecycle/starting.html

+0

有沒有辦法保存我的地圖,所以我不必再從數據庫中獲取它? –

+0

那麼有辦法。看到這裏:http://developer.android.com/guide/topics/data/data-storage.html但我認爲SQLite可能是最好的方式。 – VM4

+0

您可以擴展您自己的Application類以將數據存儲在那裏以用於測試目的,但這是一種代碼異味:您的應用程序可能會耗盡內存。實現一個好的數據庫可能是你想要的。 – VM4