为什么从BackStack返回的Fragment没有更改

时间:2017-09-23 07:46:25

标签: android android-fragments fragment-backstack

有一个FrameLayout的活动。

我需要:

1.在活动中添加(替换)片段A

2.在Fragmet中的ImageView中添加图片(按钮onclick上的示例)

3.替换容器片段A到片段B

4.如果我按下按钮返回设备,我将看到片段A没有图像(和其他更改)

我用这段代码替换片段

 FragmentManager fragmentManager = getSupportFragmentManager ();
 FragmentTransaction transaction = fragmentManager.beginTransaction ();
 transaction.replace (R.id.container, fragmentB, tag) .addToBackStack (null) .commit ();

在活动中有一个代码:

 @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            FragmentManager manager = getSupportFragmentManager();
            int count = manager.getBackStackEntryCount();

            if(count==0) {
                super.onBackPressed();
            }else{
                manager.popBackStack();
            }
        }
    }

如果你用两个活动做同样的事情 - 没有问题。按下后退按钮后,屏幕上显示图像。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

好吧,就这样说吧 在onCreate()// Host Activity

fragment = new fragmentA();
        fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.framelayout, fragment);

        fragmentTransaction.commit();

//现在你回来按,你可以看到你的形象!缺少

答案 1 :(得分:0)

尝试以下代码:

首先创建View类的全局对象,然后定义如下视图:

private View view;

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

        // Check view already created or not 
        if(view==null)    
          view = inflater.inflate(R.layout.article_view, container, false);

        return view; 
    }