2011-11-16 39 views
2

我在android應用程序中使用viewflipper。爲什麼在視圖flipover中出現stackoverflow錯誤?

我的應用程序在tabhost中有tabhost。當我點擊主頁選項卡 - >點擊飲食按鈕 - >然後它顯示像早餐,午餐等新tabhost

當我在午餐標籤,它有兩個按鈕家庭使用視圖鰭辦公室然後兩個按鈕切換佈局由視圖鰭狀肢,但它午餐時打開它顯示stackoverflow錯誤。

我也嘗試layoutinflater和其他選項期望視圖鰭狀肢,但它顯示相同的錯誤。

這是logcat的錯誤

11-16 10:08:48.229: ERROR/AndroidRuntime(223): Uncaught handler: thread main exiting due to uncaught exception 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223): java.lang.StackOverflowError 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.text.Layout.measureText(Layout.java:1601) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.text.Layout.getLineMax(Layout.java:655) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.text.Layout.draw(Layout.java:311) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.text.BoringLayout.draw(BoringLayout.java:356) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.widget.TextView.onDraw(TextView.java:4032) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.widget.CompoundButton.onDraw(CompoundButton.java:229) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.View.draw(View.java:6274) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1526) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.View.draw(View.java:6277) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.widget.FrameLayout.draw(FrameLayout.java:352) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1526) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.View.draw(View.java:6277) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1526) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.View.draw(View.java:6380) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.widget.FrameLayout.draw(FrameLayout.java:352) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1526) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.View.draw(View.java:6277) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1526) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.View.draw(View.java:6277) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.widget.FrameLayout.draw(FrameLayout.java:352) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1526) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.View.draw(View.java:6277) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.widget.FrameLayout.draw(FrameLayout.java:352) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1526) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1524) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.View.draw(View.java:6277) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.widget.FrameLayout.draw(FrameLayout.java:352) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.drawChild(ViewGroup.java:1526) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.View.draw(View.java:6277) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.widget.FrameLayout.draw(FrameLayout.java:352) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1883) 
    11-16 10:08:48.258: ERROR/AndroidRuntime(223):  at android.view.View 

的代碼是在這裏

RelativeLayout rel1,rel2,rel3,rel4,rel5,rel6, 
rel_Yes,rel_No; 

    ImageButton rad_Yes,rad_No; 
     TextView lbl_Yes,lbl_No; 
     boolean yesNoChk=false; 
     boolean have_lunch=false; 

     RelativeLayout flip1,flip2; 

     ViewFlipper vf; 
    StringBuffer pasta,rice,soup,legmues,l_pasta; 

    LinearLayout lin1; 
     int i,j; 
     ToggleButton [] imgArray1; 
     ToggleButton [] imgArray2; 
     ToggleButton [] imgArray3; 
     ToggleButton [] imgArray4; 
     ToggleButton [] imgArray5; 
     RelativeLayout item ; 

     Button btn; 
     StringBuffer msg; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
setContentView(R.layout.lunch); 





rad_Yes = (ImageButton) findViewById(R.id.lunch_radio_office); 
rad_No = (ImageButton) findViewById(R.id.lunch_radio_home); 

    vf = (ViewFlipper)findViewById(R.id.ViewFlipper01); 

flip1=(RelativeLayout)findViewById(R.id.flip1); 
flip2=(RelativeLayout)findViewById(R.id.flip2); 

rad_Yes.setOnClickListener(yesClickListener); 
rad_No.setOnClickListener(noClickListener); 

item = (RelativeLayout)findViewById(R.id.main); 
    rel1 = (RelativeLayout) findViewById(R.id.main_rel1); 
    rel2 = (RelativeLayout) findViewById(R.id.main_rel2); 
    rel3 = (RelativeLayout) findViewById(R.id.main_rel3); 
rel4 = (RelativeLayout) findViewById(R.id.main_rel4); 
    if(!yesNoChk) 
{ 
rel5 = (RelativeLayout) findViewById(R.id.main_rel5); 
} 


imgArray1 = new ToggleButton[7]; 
for(j=0;j<imgArray1.length;j++) 
{ 
    imgArray1[j] = (ToggleButton) rel1.getChildAt(j); 
    imgArray1[j].setOnClickListener(this); 

} 

imgArray2 = new ToggleButton[7]; 
for(j=0;j<imgArray2.length;j++) 
{ 
    imgArray2[j] = (ToggleButton) rel2.getChildAt(j); 
    imgArray2[j].setOnClickListener(this); 

} 
imgArray3 = new ToggleButton[7]; 
for(j=0;j<imgArray3.length;j++) 
{ 
    imgArray3[j] = (ToggleButton) rel3.getChildAt(j); 
    imgArray3[j].setOnClickListener(this); 

} 
imgArray4 = new ToggleButton[7]; 
for(j=0;j<imgArray4.length;j++) 
{ 
    imgArray4[j] = (ToggleButton) rel4.getChildAt(j); 
    imgArray4[j].setOnClickListener(this); 

} 

if(!yesNoChk) 
{ 
    imgArray5 = new ToggleButton[7]; 
    for(j=0;j<imgArray5.length;j++) 
    { 
     imgArray5[j] = (ToggleButton) rel5.getChildAt(j); 
     imgArray5[j].setOnClickListener(this); 

    } 
} 
} 





OnClickListener yesClickListener = new OnClickListener() { 
    public void onClick(View v) { 
     if(!yesNoChk){ 
      rad_Yes.setImageResource(R.drawable.selectradiobtn); 
      rad_No.setImageResource(R.drawable.radiobtn); 
      yesNoChk = true; 


      vf.getChildAt(1).setVisibility(View.VISIBLE); 
      vf.getChildAt(0).setVisibility(View.GONE); 


     } 

    } 
}; 



OnClickListener noClickListener = new OnClickListener() { 
    public void onClick(View v) { 

      rad_No.setImageResource(R.drawable.selectradiobtn); 
      rad_Yes.setImageResource(R.drawable.radiobtn); 
      yesNoChk = false; 

      vf.getChildAt(0).setVisibility(View.VISIBLE); 
      vf.getChildAt(1).setVisibility(View.GONE); 




    } 
}; 
+0

我們得看更多的代碼。堆棧溢出意味着它陷入了一個無限循環的地方(我的猜測是某些東西可能會與哪個視圖抓住焦點/需要繪製)混爲一談。 – Blaskovicz

+0

@Blaskovicz我已發佈我的源代碼,請再次檢查 – Newts

回答

1

哦!我明白了我的觀點,我需要改變對我來說很簡單的文本框值。在選項卡內放置我的佈局選項卡,因此無法清除堆棧,因此無法清除堆棧,然後替換我們想要的文本視圖的名稱。

+1

+1當您解決自己的問題時發佈解決方案給您自己的問題,這是一個很好的做法,供將來參考,並可以幫助其他人 – Guillaume

+2

對自己的問題的答案只有可以理解纔是好事。 –

相關問題