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

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

刪除片段中的先前視圖的問題

刪除片段中的先前視圖的問題

慕容森 2021-11-24 20:07:11
我在 android 中創建了一個包含 2 個函數的片段,在調用片段時在開始時調用 startview(),然后當用戶單擊按鈕時調用 childfragment()。那時它應該從 startview() 中刪除視圖,然后用 childfragment() 中的 newview 替換它,這就是我認為它會做的。但是它并沒有刪除舊視圖并將新視圖放在舊視圖之上。甚至認為我已經放置 mContainer.removeAllViews();它并沒有刪除舊視圖。我錯過了什么?請幫忙。這是代碼@SuppressLint("ValidFragment")public class FragmentSideContent extends android.app.Fragment {    //private OnFragmentInteractionListener mListener;    Context context;    View view,trueview;    ListView listView;    ListAdapter listAdapter;    private LayoutInflater mInflater;    private ViewGroup mContainer;    int[] image = {1,2,3};    String[] titleText = {"one","two","three","one","two","three","one","two","three","one","two","three"};    String[] subTitleText = {"one","two","three","one","two","three","one","two","three","one","two","three"};    public FragmentSideContent(Context context) {        this.context = context;    }    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {        mInflater = inflater;        mContainer = container;        startview();        return trueview;    }    public void startview(){        view = mInflater.inflate(R.layout.fragment_sidecontent,mContainer,false);        listView = (ListView) view.findViewById(R.id.noteList);        listAdapter = new ListAdapter(context,image,titleText,subTitleText);        listView.setAdapter(listAdapter);        trueview = view;    }    public void childfragment(){        mContainer.removeAllViews();        View newview = mInflater.inflate(R.layout.fragment_sidecontent,mContainer,false);        Fragment childFragment = new FragmentList(context);        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();        transaction.replace(R.id.child_fragment_container, childFragment).commit();        mContainer.addView(newview);        mContainer.addView(trueview);        trueview = newview;    }}
查看完整描述

1 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

我建議你在你的片段布局中加入一些 GroupView 來做到這一點。


fragment_layout.xml


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

             xmlns:tools="http://schemas.android.com/tools"

             android:id="@+id/container"

             android:layout_width="match_parent"

             android:layout_height="match_parent">

</FrameLayout>

在你的 Fragment.java 中


     View view;

     Framelayout fContainer;

     @Override

      public View onCreateView(LayoutInflater inflater, ViewGroup container,

                               Bundle savedInstanceState) {

          view = inflater.inflate(R.layout.fragment_layout, container, false);


        return startView();

      }


      public View startview(){

        fContainer = (Framelayout) view.findViewById(R.id.container);

        listView = (ListView) view.findViewById(R.id.noteList);

        listAdapter = new ListAdapter(context,image,titleText,subTitleText);

        listView.setAdapter(listAdapter);

        return view;

    }



public void childfragment(){

        fContainer.removeAllViews();

        Fragment childFragment = new FragmentList(context);

        FragmentTransaction transaction = 

        getChildFragmentManager().beginTransaction();

        transaction.replace(R.id.container, childFragment).commit();    

    }

現在在另一個片段 (FragmentList) 的 oncreateview 中放置您想要膨脹的視圖。


片段列表.java


@Override

          public View onCreateView(LayoutInflater inflater, ViewGroup container,

                                   Bundle savedInstanceState) {

             View newview = mInflater.inflate(R.layout.fragment_sidecontent,mContainer,false);


            return newview;

          }


查看完整回答
反對 回復 2021-11-24
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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