![](/img/trans.png)
[英]line-height displaying differently on iPhone and iPad than on other devices
[英]Do Samsung devices treat FragmentTransactions differently than other devices?
我一直在努力解決一個讓我瘋狂多年的問題。 我有一個應用程序,其中一個活動通過動態片段交換顯示不同的屏幕,即通常的
getFragmentManager().beginTransaction().replace(R.id.fragementContainer, new SomeFragment()).commit();
這適用於我的Nexus 4,Nexus 5,Nexus 7 2012,Nexus 7 2013,Moto G 1st gen等。除三星設備(SGS5,SGS6)外,其他大部分都是如此。 在這些設備上,有時(很少,但不是很少), replace()調用似乎被誤解為add()調用,新片段出現在前一個上面。
我試過復制這個bug,但似乎沒有任何模式。 由於我在任何地方都沒有收到錯誤消息,因此我無法對其進行故障排除。
這就是我總是使用支持庫的原因。 源代碼在您的項目中,並未被第三方修改。 你已經在使用支持包嗎?
這很可能是由一些三星“優化”造成的。 我唯一可以建議的是使用remove()
和add()
而不是replace()
。 FragmentTransaction
的實現是不同的,因此有可能表現不同。
您實際上可以輕松刪除該片段,因為它具有與容器相同的ID。 試試這個:
FragmentTransaction transaction = fragmentManager.beginTransaction();
Fragment oldFragment = fragmentManager.findFragmentById(R.id.container);
if (oldFragment != null) transaction.remove(oldFragment);
transaction.add(R.id.container, new Fragment(), "tag").commit();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.