我只在 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
提交
取消