亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何修復片段重疊?

如何修復片段重疊?

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 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號