Android通过应用程序传递数据
我有一个listview,它有一个位置列表——我有listview中每一行的id、名称和位置。我的数据存储在本地sqlite中 当用户单击某个特定位置时,我希望在下一个屏幕中显示该特定位置的详细信息,其结构如下Android通过应用程序传递数据,android,persistent-storage,Android,Persistent Storage,我有一个listview,它有一个位置列表——我有listview中每一行的id、名称和位置。我的数据存储在本地sqlite中 当用户单击某个特定位置时,我希望在下一个屏幕中显示该特定位置的详细信息,其结构如下 承载两个片段的片段活动 第一个片段的顶部有一个Viewpager指示器,下面是信息 第二个片段承载一个谷歌地图,显示地图上的位置 因此,我需要知道用户在三个不同的活动和片段中选择的位置 用户应该能够返回并选择一个新的位置,并且应该能够再次传递 PlaceActivity.java,它
- 承载两个片段的片段活动
- 第一个片段的顶部有一个Viewpager指示器,下面是信息
- 第二个片段承载一个谷歌地图,显示地图上的位置
public class PlaceActivity extends SherlockFragmentActivity implements
OnShareTargetSelectedListener {
private PlaceMapsFragment fragment_maps = null;
private PlaceDetailsFragment fragment_details = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_place);
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle("Nandi Hills");
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tabMaps = actionBar.newTab();
ActionBar.Tab tabDetails = actionBar.newTab();
tabDetails.setText("Details");
tabMaps.setText("Maps");
tabDetails.setTabListener(new PlaceTabListener());
tabMaps.setTabListener(new PlaceTabListener());
actionBar.addTab(tabDetails);
actionBar.addTab(tabMaps);
}
private class PlaceTabListener implements ActionBar.TabListener {
@Override
public void onTabSelected(Tab tab,
android.support.v4.app.FragmentTransaction ft) {
ft.setCustomAnimations(android.R.anim.fade_in,
android.R.anim.fade_out);
// TODO Auto-generated method stub
if (tab.getPosition() == 0) {
if (fragment_details == null) {
fragment_details = new PlaceDetailsFragment();
ft.add(R.id.fragment_container, fragment_details,
PlaceDetailsFragment.TAG);
} else {
ft.show(fragment_details);
}
} else {
if (fragment_maps == null) {
// fragment_maps = new PlaceMapsFragment();
fragment_maps = PlaceMapsFragment.newInstance(new LatLng(
13.005621, 77.577531));
ft.add(R.id.fragment_container, fragment_maps,
PlaceMapsFragment.TAG);
} else {
ft.show(fragment_maps);
}
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (tab.getPosition() == 0) {
if (fragment_details != null) {
ft.hide(fragment_details);
}
} else {
if (fragment_maps != null) {
ft.hide(fragment_maps);
}
}
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
}
在MapFragment中创建一个构造函数,获取该片段所需的值,然后用该信息填充该片段
public MyMapFragment(long id,String name,int position){
this.id = id;
this.name = name;
this.position = position
}
您将需要为片段设置对保留活动的回调,以便将信息填充到映射片段中
如果需要将数据发送到某个活动,则将该数据包含在intent
intent.put(“some_int”,1)中代码>在listview活动中设置一个静态最终变量并尝试从任何地方访问它是否是一种好的做法?这很好,因为如果使用加载程序和多选listview,您需要它globalMainActivity.java,它将listview托管到PlaceActivity.java,因为我需要三个文件中的ID-PlaceActivity,PlaceDetailsFragment和PlaceMapFragments因此只需将ID传递给intent中的活动,然后让PlaceActivity
将其分发给片段构造函数,假设PlaceActivity
包含这两个片段