android stackover flow problem

在作android UI 的時候,遇到了一個問題,由於不一樣的UI之間須要相互切換。因此不加思索的寫了下面的程式android

public class  FirstLayout extends LinearLayout {
    public FirstLayout (Context context) {
        super(context);
        initial(context);
    }      
    void initialize(final Context context,t) {
       
            addView(new SecondLayout(context, eventlist));
       
    }   

}佈局

public class  SecondLayout extends LinearLayout  {
  
    public SecondLayout (Context context) {
        super(context);
        initial(context);
    }      
    void initialize(Context context) {    
            initial(new FirstLayout(contextt));  
    }   
}rem

在這種狀況下,好比說,咱們點擊button,頁面進行跳轉。可是會進行不斷的入棧操做,最終致使stack overflow.頁面佈局

因此爲了不這種狀況的出現,要進行另一種操做,在定義個總體佈局,而後分開處理it

public class FatherClass  extends LinearLayout{event

    private LinearLayout sonLayout = null;class

    private LinearLayout daughterLayout = null;List

    private Button AButton = null;view

    private Button BButton = null;vi

    public FatherClass (Context context) {

            supper(context);

            initial(context);

    }

    initial(Context context) {

        AButton.setOnClickListener(new OnClickListener() {
                public void onClick(View view) {
                    removeView(sonLayout )
                    addView(daughterLayout);
                }
        });

    BButton.setOnClickListener(new OnClickListener() {
                public void onClick(View view) {
                    removeView(daughterLayout)
                    addView(sonLayout);
                }
        });
    }

    /*generate sonLayout*/

    void addSonLayout(Context){

    sonLayout = new LinearLayout(context);

     .........

    }

/*generate daughterLayout*/

    void addDaughterLayout(Context){

        daughterLayout = new LinearLayout(context);

     .........

    }

}

其中,用的是removeView ,刪除這樣一個子佈局,而不是用removeAllViews。這樣作的好處就是能夠作到局部處理。

從而避免了嵌套入棧操做。因此這一點在多頁面佈局的時候應該考慮到。

相關文章
相關標籤/搜索