【发布时间】:2014-10-24 20:25:33
【问题描述】:
我正在按照谷歌文档的设计构建一个导航抽屉,但是我有一个片段没有被替换的问题。 http://developer.android.com/training/implementing-navigation/nav-drawer.html
当应用首次加载时,会加载默认片段。 单击抽屉列表中的另一个项目会留下一个空视图 但是在旋转设备时,会加载所选的片段。
public void selectNavActivty(int position){
// TODO Changing between the different screens selection
fragment = null;
switch (position) {
case 0:
fragment = OverLay.newInstance();
break;
case 1:
fragment = Dummy.newInstance();
break;
}
if(fragment != null) {
// attach added to handle viewpager fragments
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.content_frame, fragment).attach(fragment)
.addToBackStack(null);
trans.commit();
getFragmentManager().executePendingTransactions();
} else {
Log.d("Drawer Activity","Error in creating Fragment");
}
}
【问题讨论】:
-
我有同样的问题。这并不常见。它在 20 次尝试中发生 1 次。 onActivityCreated 已创建,视图可以为空白或部分视图可以为空白...我添加而不是替换。
-
@apmartin1991 您可以在此处的某处提供您的代码 sn-ps(例如,作为 gist.github.com) - 更容易理解根本原因吗? (例如,在原始帖子中,调用了 .attach(),但不应该也没有必要调用
executePendingTransactions(),但我们对您的问题一无所知。 -
Konstantin Loginov - 这是我关于同一件事的问题stackoverflow.com/questions/34742360/…
-
@apmartin1991 我已经回答过了。我认为是由于使用
executePendingTransactions并在现有片段之上添加片段引起的,这通常是不好的做法,因为它们都保留在内存中并处于活动状态。
标签: android navigation-drawer fragmenttransaction