2013-08-06 60 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