在作android UI 的時候,遇到了一個問題,由於不一樣的UI之間須要相互切換。因此不加思索的寫了下面的程式android
public class FirstLayout extends LinearLayout {}佈局
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。這樣作的好處就是能夠作到局部處理。
從而避免了嵌套入棧操做。因此這一點在多頁面佈局的時候應該考慮到。