2014-02-24 38 views
0

我遇到的问题对我来说真的很有趣。我使用Master Details模板开发应用程序。在平板电脑上一切正常,但当切换到手机在这里我得到的东西,我不知道如何处理。我选择一个项目后,我发动意图用下面的代码:从细节片段获取意图数据

Intent detailIntent = new Intent(this, CategoryDetailActivity.class); 
detailIntent.putExtra(CategoryDetailFragment.ARG_ITEM_ID, id); 
startActivity(detailIntent); 

,问题是,我不能从目标片段获取id的值:

if (getArguments().containsKey(ARG_ITEM_ID)) { 
    _locations = _sqlLoc.getAllLocationsByCategory(getArguments().getInt(ARG_ITEM_ID, -1)); 
} 
else{ 
    _locations = _sqlLoc.getAllLocationsByCategory(-1); 
} 

有了这个代码我总是得到-1而不是实际值。有人可以帮我解决这个问题吗?

回答

0

为什么你要开始一个新的Activity?如果您想正确实施Master-Details模式的电话版本,则应该用新的Fragment替换当前的Fragment。就像这样:getFragmentManager().beginTransaction().replace(R.id.main_layout, new DetailsFragment()).addToBackStack(null).commit();

您可以在Activity中存储任何需要的数据,并通过(MyActivity)getActivity().getData()从您的碎片中获取。这样您就不需要通过Bundle来传递任何数据。