我在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);
}
};
我們得看更多的代碼。堆棧溢出意味着它陷入了一個無限循環的地方(我的猜測是某些東西可能會與哪個視圖抓住焦點/需要繪製)混爲一談。 – Blaskovicz
@Blaskovicz我已發佈我的源代碼,請再次檢查 – Newts