作者tails32100 (Tails)
看板AndroidDev
标题[问题] Fragment嵌入ViewPager+Fragment的问题
时间Tue Mar 4 16:34:59 2014
承之前的问题
http://webptt.com/cn.aspx?n=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)
1F:推 tac0wu:解法似乎是说setCurrentItem 被呼叫太多次(在同一个index上 03/05 00:11
2F:→ tac0wu:导致main thread的queue塞了太多东西 没处理到一些跟menu有 03/05 00:12
3F:→ tac0wu:关的重要事情 所以他给了两个解法 都是在避免这种事情 03/05 00:13
4F:→ 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)
5F:推 tac0wu:恭喜 03/05 00:35