2013-01-11 26 views
2

我有一個列表視圖,它有一個地方列表 - 我有列表視圖的每一行的id,名稱和位置。我的數據本地存儲在sqlite中。Android在應用程序中傳遞數據

當用戶點擊一個特定的地方,我想如下

  • 甲片段活動該主機的兩個片段
  • 第一塊碎片,以顯示其被構造該特定位置中的下一個屏幕的細節在頂部有一個Viewpager指標,下面有信息。
  • Second Fragment擁有一個Google Map,顯示地圖上的地點。

所以我需要知道用戶在三個不同的活動和片段中選擇的位置。

用戶應該能夠回去選擇一個新的地方,並應該再次能夠傳遞。

PlaceActivity.java這需要地方

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 

     } 

    } 
} 

回答

1

的ID使一個構造在MapFragment在發生在你需要該片斷,然後使用該信息填充片段中的值。

public MyMapFragment(long id,String name,int position){ 
    this.id = id; 
    this.name = name; 
    this.position = position 
} 

您將需要建立一個回調到保持活動的片段PADD信息到地圖片段

,如果你需要將數據發送到活動,則包括在該數據意圖intent.put("some_int",1);

+0

這是一個很好的做法,在listview活動中設置靜態最終變量並嘗試從每個地方訪問它? –

+0

這將是好的是因爲如果你使用裝載機和多選列表視圖你需要全球 – tyczj

+0

等待你的意思是無處不在的活動是正確的嗎? – tyczj

相關問題