为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复片段重叠?

如何修复片段重叠?

MM们 2023-02-23 16:12:49
我只在 Activity 中动态创建了一个片段并将数据添加到片段中。当我更改我的数据片段时再次创建。当我想返回活动时,他们将首先显示以前的数据,然后在我按下后退按钮时转到主活动。当我按下后退按钮时如何解决这个问题他们只去主要活动而不是以前的数据。 SearchFragment searchFragment = new SearchFragment(MainActivity.this);                searchFragment.setArguments(extra);                fragmentTransaction = manager.beginTransaction();                fragmentTransaction.add(R.id.myFragmwent_layout,searchFragment,"first");                fragmentTransaction.addToBackStack(null);                fragmentTransaction.commit(); SearchFragment searchFragment = (SearchFragment)  manager.findFragmentByTag("first");                fragmentTransaction = manager.beginTransaction();                if (searchFragment!=null){                    fragmentTransaction.remove(searchFragment);                    fragmentTransaction.addToBackStack(null);                    fragmentTransaction.commit();                }搜索片段类public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        // Inflate the layout for this fragment        if (getArguments()!=null){            keyword = getArguments().getString("keyword");        }        View view;        view = inflater.inflate(R.layout.fragment_search, container, false);        mRecyclerView = view.findViewById(R.id.recycler_view_Frag);        mRecyclerView.setHasFixedSize(true);        mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));        categoryItemArrayList = new ArrayList<>();        sQueue = Volley.newRequestQueue(getContext());        JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.POST, url+keyword,                null,                new Response.Listener<JSONArray>() {                    @Override                    public void onResponse(JSONArray response) {
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

请在您的情况下使用替换而不是添加

SearchFragment searchFragment = new SearchFragment(MainActivity.this);
                searchFragment.setArguments(extra);
                fragmentTransaction = manager.beginTransaction();
                fragmentTransaction.replace(R.id.myFragmwent_layout,searchFragment,"first");
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();


查看完整回答
反对 回复 2023-02-23
?
12345678_0001

TA贡献1802条经验 获得超5个赞

FragmentTransaction.add()将多个片段添加到容器中,它们将一个层叠在另一个之上。如果您的片段具有透明背景,您将看到此效果并且能够同时与多个片段进行交互。


如果您使用FragmentTransaction.replace(R.id.container,fragment)它,它将删除容器中已有的所有片段,并将新片段添加到同一容器中。


所以你需要修改你的代码并使用fragmentTransaction.replace而不是fragmentTrasaction.add


SearchFragment searchFragment = new SearchFragment(MainActivity.this);

searchFragment.setArguments(extra);

fragmentTransaction = manager.beginTransaction();

fragmentTransaction.replace(R.id.myFragmwent_layout,searchFragment,"first");

fragmentTransaction.addToBackStack(null);

fragmentTransaction.commit();


查看完整回答
反对 回复 2023-02-23
  • 2 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号