android stackover flow problem
2019獨角獸企業重金招聘Python工程師標準>>>
在做android UI 的時候,遇到了一個問題,因為不同的UI之間需要相互切換。所以不加思索的寫了下面的程式
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));??
?? ?}???
}
在這種情況下,比如說,我們點擊button,頁面進行跳轉。但是會進行不斷的入棧操作,最終導致stack overflow.
所以為了避免這種情況的出現,要進行另外一種操作,在定義個整體布局,然后分開處理
public class FatherClass? extends LinearLayout{
??? private LinearLayout sonLayout = null;
??? private LinearLayout daughterLayout = null;
??? private Button AButton = null;
??? private Button BButton = null;
??? 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。這樣做的好處就是可以做到局部處理。
從而避免了嵌套入棧操作。所以這一點在多頁面布局的時候應該考慮到。
轉載于:https://my.oschina.net/u/138169/blog/16794
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的android stackover flow problem的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WPF新手实践7:MVVM Light
- 下一篇: (译)如何使用cocos2d来制作一个打