作者tails32100 (Tails)
看板AndroidDev
標題[問題] Fragment嵌入ViewPager+Fragment的問題
時間Tue Mar 4 16:34:59 2014
承之前的問題
http://www.ptt.cc/bbs/AndroidDev/M.1393480191.A.C00.html
之前的問題是解決了
不過冒出了第二個問題
現在的情況是,假設1裡面有1-1 = CategoryFragment, 1-2 = ListFragment
我現在的做法是
1是主Fragment,裡面會有ViewPager來放1-1 1-2
Layout
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Adpater程式碼片段
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new CategoryFragment();
case 1:
return new ListFragment();
}
return null;
}
現在問題是:
我在 CategoryFragment 和 ListFragment 有各別設兩個不同的 Menu Resource
而 CategoryFragment 是最一開始進入的,但它一開始不會出現我設定的 MenuItem
但是 swipe 到 ListFragment ,MenuItem 有跑出來,這部分很正常沒問題
而再 swipe 回來 CategoryFagment ,不見的 MenuItem 就在這時候跑出來了
我想 CategoryFragment 和 ListFragment 的設定應該沒有問題
setHasOptionsMenu(true) 有設定
onCreateOptionsMenu() 有覆寫
而上層的 Fragment 我沒有覆寫 onCreateOptionsMenu
因為寫在上層的話,該 MenuItem 就會共用
我需求是兩個 Fragment 要出現不一樣的 MenuItem
感謝版上的神人解答<(_ _)>
註:
Google 找資料是有看到 ActionBarSherlock 有遇到這個問題
但我並沒有使用 ActionBarSherlock
裡面提到的方法也不能使用,所以就沒參考了
補充:
後來有找到解決方法。
在網路上有看到其他人也有類似的問題
http://ppt.cc/mXMK
http://ppt.cc/Ojkr
小弟英文弱弱看不懂,只知道這應該是 Android 的 bug
因為 API LEVEL 17 就沒有這個問題了
後來我是改成主 Fragment 設成 CategoryFragment 的 Menu
而 CategoryFragment 就不用設 Menu
但是設 onOptionsItemSelected 依然可以對應主 Fragment 的 Menu 的
其他 ListFragment 需要在 onCreateOptionsMenu 最前面加 menu.clear()
這樣就可以正常動作了,但不是很完美。
因為主 Fragment 和 CategoryFragment 就必需綁在一起使用了。
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.72.45
※ 編輯: tails32100 來自: 220.134.72.45 (03/04 18:52)
推 tac0wu:解法似乎是說setCurrentItem 被呼叫太多次(在同一個index上 03/05 00:11
→ tac0wu:導致main thread的queue塞了太多東西 沒處理到一些跟menu有 03/05 00:12
→ tac0wu:關的重要事情 所以他給了兩個解法 都是在避免這種事情 03/05 00:13
→ tac0wu:發生 可惜我不是很清楚你怎麼寫的 只能幫到這樣 03/05 00:13
謝謝您的翻譯 <(_ _)>
我的程式碼並沒有呼叫到 setCurrentItem()
所以還是完全不知道怎麼回事
倒是用 debug 看過
在 CategoryFragment 裡的 onPrepareOptionsMenu 去觀察 Menu
裡面的確是有我在 CategoryFragment 加上去的 Menu
只是沒有在 Visible 的陣列裡。
我也試過用 Fragment
#setMenuVisibility() ,但完全沒用 :(
總之問題已經解決
是說,做出來的效果跟iOS感覺還蠻像的...Orz....
※ 編輯: tails32100 來自: 59.126.68.4 (03/05 00:29)
推 tac0wu:恭喜 03/05 00:35