片段事务加载空视图但片段在旋转设备后显示

and*_*uae 10 android fragmenttransaction navigation-drawer

我正在构建一个由谷歌文档设计的导航抽屉,但我有一个问题,片段没有被替换.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");
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

对于导航菜单片段事务,我使用以下方法,这样片段将被添加并放在顶部.

String name = "myFragment";
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, fragment, name)
.commit();
Run Code Online (Sandbox Code Playgroud)

查找attach()函数.它遵循不同的片段生命周期.还要确保您的布局文件framelayout可见.


Gee*_*ngh 0

修改您的代码如下:

if(fragment != null) {
        // attach added to handle viewpager fragments
        FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
        trans.replace(R.id.content_frame, fragment);
        trans.addToBackStack(null);
        trans.commit();
    } else {
        Log.d("Drawer Activity","Error in creating Fragment");
    }
Run Code Online (Sandbox Code Playgroud)

如果该解决方案不适合您,请共享 xml 代码以及您的片段代码。