2014-07-06 14 views
1

所以我一直在玩碎片,我非常喜歡使用Log.d來查看方法的輸出等,以便更好地理解事物。安卓通過id log.d發現片段輸出

我正在使用findFragmentById。

當我使用這些Log.d聲明:

Log.d("APPTAG", "Fragment: "+ getSupportFragmentManager().findFragmentById(R.id.pager)); 
Log.d("APPTAG", "Fragment is visible : "+ getSupportFragmentManager().findFragmentById(R.id.pager).isVisible()); 

我得到這些結果:

APPTAG﹕ Fragment: FragmentTwo{52742beC#1 id=0x7f070077 android:switcher:2131165303:1} 
APPTAG﹕ Fragment is visible : true 

所以,我理解這一點的方式是,對於一個流暢的用戶體驗當前片段以及前一個和下一個片段是爲了它們之間的平滑過渡而創建的。

我正在使用this教程來設置它。 我有3個片段,只有一個片段有一個調用方法來使用log.d語句的按鈕。

對於那些不想看鏈接的人。我使用ViewPager和FragmentPagerAdapter來創建片段。

問:

  1. 有人能向我解釋爲什麼我不 片段一個獲取值?
  2. 如果可能,我怎樣才能得到它們?
  3. 爲什麼在第一次啓動時,我得到的片段二(ID信息和是可見的)當片段當前在視圖/屏幕上的值?

感謝

回答

0

能向我解釋人爲什麼我沒有得到的片段一個值是多少?

我假設通過「片段一」你的意思是在ViewPager第一頁。

你聲明:

getSupportFragmentManager().findFragmentById(R.id.pager) 

正在恢復尋呼機本身,而不是頁面片段是ViewPager裏面的片段。注意你傳遞給findFragmentById - R.id.pager的論點。這是尋呼機本身的ID。

如果可能,我該如何得到它們?

可以訪問ViewPager的頁面片段。一種解決方案是通過重寫instantiateItem()和destroyItem()來維護適配器內的當前片段的集合。有一個完整的解決方案here

爲什麼當我得到的片段二的值是否說片段二是可見的,當第一個片段當前正在查看/在屏幕上?

我不認爲「片段二」是指ViewPager內的任何頁面 - 它指的是在ViewPager本身是分段