我只在 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();

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();
添加回答
举报
0/150
提交
取消