当我按下时片段不会消失

时间:2018-02-23 16:11:57

标签: java android android-fragments

我的代码存在问题,我在其中列出了" Places"在列表片段中,我选择了一个Place,它正在显示一个新的片段,其中包含详细信息。然后我单击编辑,它会弹出一个新片段,我可以在其中编辑详细信息。单击“保存”后,将转到详细信息片段,但会显示新的详细信息。在所有这些过渡到新片段的过程中,我将前一个片段添加到后面的堆栈中,所以如果我在任何时候向后按,它会返回并且所有这一切都正常,除非我在保存了一些新细节之后再按回去,它显示了地点列表,但新细节片段没有消失。我可能会出错的任何想法?

我已经在按钮点击中添加了代码,并列出了与片段转换相关的片段点击,因为我认为这是唯一相关的代码,但如果需要更多代码,请告知我们。

这篇文章适用于从列表中选择地点时:

public void onListFragmentInteraction(Place place, Integer position) {

    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

    //replace the fragment currently in fragment container with the new details fragment.
    transaction.replace(R.id.fragment_container, details);
    //add the transaction to the back of the stack so the back button navigates back to list fragment
    transaction.addToBackStack(null);

    // Commit the transaction
    transaction.commit();
}

这部分是我点击编辑细节浮动按钮的地方:

FloatingActionButton fab = view.findViewById(R.id.editPlace);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            FragmentTransaction transaction = getFragmentManager().beginTransaction();

            //replace the fragment currently in fragment container with the new update fragment.
            transaction.replace(R.id.fragment_container, updatePlaceFragment);
            //add the transaction to the back of the stack so the back button navigates back to list fragment
            transaction.addToBackStack(null);

            // Commit the transaction
            transaction.commit();
        }
    });

这部分是我点击保存的地方,之后我按下后退按钮返回列表,我的问题出现在哪里:

Button save = (Button) view.findViewById(R.id.updateNewPlace);
    save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            FragmentManager manager = getFragmentManager();
            manager.popBackStack();
            manager.popBackStack();

            FragmentTransaction transaction = getFragmentManager().beginTransaction();

            //replace the fragment currently in fragment container with the new update fragment.
            transaction.replace(R.id.fragment_container, placeDetails);
            transaction.addToBackStack(null);
            transaction.commit();
        }
    });

我一直在网上寻找解决方案几个小时,我无法解决这个问题,所以任何帮助都会非常感激。感谢。

修改

只是为了阐明每个交互方法执行的片段: 第一个是在选择列表片段中的项目时执行的。 第二个保存在PlaceDetails片段中,单击它会转到UpdatePlaceFragment片段。保存的第三个按钮保存在UpdatePlaceFragment中,并且应该带您到PlaceDetails以及新的详细信息。按下后面应该返回到列表片段,但它确实可以看到PlaceDetails。奇怪的是,如果我在列表中选择一个项目并立即按回去而不进行编辑,它将进入列表并且PlaceDetails片段将消失。

编辑2: 我已使用固定代码更新了保存按钮。需要两次添加到后台堆栈和popBackStack。谢谢你的帮助!

0 个答案:

没有答案