0

我有3個活動,我想轉換成片段,這樣我可以實現ViewPager它們之間滑動:活動片段

  1. 活性A(向左)
  2. 活性B(中央)
  3. 活性C(向右)

活動B從外部活動稱爲和數據被傳遞給它的意圖內。現在,活動B將意圖內的數據傳遞到活動A和C當它們啓動時。此處的想法是,B顯示帶有每X秒更新一次的ImageView的幻燈片,並且A和C顯示有關各個圖片的信息。因此,這裏是我的問題:

  1. 我如何複製與片段此功能,這樣,當我從輕掃片段B到C和片段B到A我可以通過適當的數據給他們。我現在這樣做的這種方式與我的活動:

    Intent a = new Intent(SlideShow.this,MapsActivity.class); 
    a.putExtra("long", longitude); 
    a.putExtra("lang", langitude); 
    pauseSlideShow(i, timeRemaining); 
    isPaused = true; 
    startActivity(a) 
    
  2. 我對FragmentPagerAdapterFragmentStatePagerAdapter之間的差異讀了。目前,當我從B啓動活動A和C時,我不會在B上調用finish(),因此當我回到它時,它的狀態與以前完全相同。但是,由於活動A和C支持B,因此當我從A或C返回活動B時,我通過分別在A和C上調用finish()來結束它們。我怎樣才能用碎片做到這一點?

+0

我不認爲使用ViewPager是你需要的,如果意圖在活動之間傳遞,因爲所有片段都在ViewPager中加載。你需要重寫沒有意圖的所有數據傳遞 –

+0

是的,我的問題是如何? – Alk

回答

0
  1. 如果使用FragmentPagerAdapter,確保當您在getItem()創建一個片段你一個參考的地方保存到片段中的適配器或(最好)的活動。

    在片段B上創建返回數據的方法(即getLatLong())。

    onCreateView()的片段A中,您將從活動中獲得對片段B的引用,並調用getLatLong()來獲取所需的數據。

  2. 您可以通過調用viewpager.setOffscreenPageLimit(2)來保持片段在內存中可用。當你刷到C片段這樣碎片A不會被破壞,因爲ViewPager將保持兩種片段片段C的左側,這是你的片段A和B.

另一個(可能更好)方法是在活動開始時創建所有三個片段,並在調用getItem()時返回適當的片段。通過這樣做,您可以使用setTargetFragment()getTargetFragment()來允許片段相互獲取數據。當你這樣做的時候,請記住一個片段可能有或沒有可用的UI,所以如果你推動數據而不是拉動數據,確保接收數據的方法檢查getView() == null