91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

You must call removeView() on the child's parent first

發布時間:2020-07-31 12:14:17 來源:網絡 閱讀:1023 作者:霧曦蒙蒙 欄目:開發技術

      由于我在做底部框架的時候,使用的是以ViewPager+代碼控制來實現類似微信的主頁框架的顯示效果。大概就是實現了這種效果:

 You must call removeView() on the child's parent first

     

翻頁效果是用ViewPager來實現的,下面的tabs的響應跟隨效果是使用代碼控制。

當然上面是使用了5個布局來完成翻頁效果。

但是我在實現另一個效果的時候,出現了問題:

譬如:我想在第三個頁面(home頁面)點擊,通過它的被點擊觸發了監聽。然后進行判斷token是否存在?若存在第三個頁面顯示效果不變!反之,則布局改變為另一個!在這種情況下,使得下面的tabs保持不變的時候<解釋一下,所有的頁面的展示是通過布局初始化來控制其中的所有控件的。不要簡單地認為是通過Fragment or Activity來實現的,NO!>

于是在如下代碼:

public class MyOnClickListener implements OnClickListener{
    private int index = 0;
    private ViewPager mViewPager;
    private Context context;
    private ArrayList<View> views;
    private View loginLayout;
    private LayoutInite layoutInite;
    private Handler mHandler;      
    public final static int TAG_GET_MYSELF_DATA=0067;
    public MyOnClickListener(Context context,int index,ViewPager mViewPager,
            ArrayList<View> views,View loginLayout,LayoutInite layoutInite,Handler mHandler) {
        this.context=context;
        this.index = index;
        this.mViewPager=mViewPager;
        this.views=views;
        this.loginLayout=loginLayout;
        this.layoutInite=layoutInite;
        this.mHandler=mHandler;
                                                                                                                                                                                           
    }
    @Override
    public void onClick(View v) {
        String token=SharedpreferensUitls.getToken(context);
        //判斷token是否為空,為空的話改變個人中心布局為登錄的頁面
        Log.d("token", "============》"+token);
        if(TextUtils.isEmpty(token)){
            Log.d("view", "ArrayList<View> views-->"+views);
            Log.d("view", "View viewLogin-->"+loginLayout);
            views.remove(3);
            views.add(3,loginLayout);//這里不進行上一步的操作會報錯--->The specified child already has a parent. 
        }                            //You must call removeView() on the child's parent first.
        layoutInite.getMayPagerAdp().notifyDataSetChanged();
        mViewPager.setCurrentItem(index);
    }

此時,要實現這種二次點擊第三個頁面模塊,要仍然保持底部tabs的效果不變。那我就要向原先初始化過的布局(這幾個布局在容器ArraList中,其對象是views)容器的對象中,添加所初始化過的,要通過判斷是否有token來顯示出來的頁面效果。就像上面一樣,在添加的上面要添加一句代碼,很重要:

views.remove(3);

添加過之后就不會再有bug--> you must call removeView() on the child's parent first.

真正的理論原因我還不知道,請看到并知道的朋友能留下真知灼見!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

九江市| 张家港市| 信丰县| 福海县| 错那县| 屏边| 六枝特区| 五莲县| 张家港市| 曲周县| 德昌县| 黎川县| 鄂温| 东至县| 内江市| 乌兰浩特市| 景泰县| 墨玉县| 黎城县| 象州县| 长寿区| 吐鲁番市| 辽阳市| 鸡西市| 马鞍山市| 朝阳市| 抚松县| 吴桥县| 普兰店市| 垣曲县| 杂多县| 台南市| 榕江县| 卓尼县| 崇阳县| 浦东新区| 天长市| 滦平县| 仁怀市| 香河县| 石门县|