我的代码存在问题,我在其中列出了" 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。谢谢你的帮助!