2011-11-16 7 views
2

J'utilise viewflipper dans une application android.Pourquoi erreur stackoverflow dans la vue flipper?

Mon application a l'onglet tab dans tabhost. Lorsque je clique sur l'onglet Accueil -> cliquez sur le bouton alimentation -> il affiche les nouveaux tabhost comme le petit déjeuner, le déjeuner, etc.

quand je suis vue utilisation Flipper dans onglet déjeuner, qui a deux boutons Accueil et bureau et puis la disposition des deux interrupteurs de bouton par flipper de vue, mais quand l'onglet de déjeuner ouvert il montre erreur de stackoverflow.

J'essaye également layoutinflater et d'autres options attendez la vue flipper mais elle montre la même erreur.

Cette erreur est 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 

Le code est ici

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

Nous devrions voir plus de code. Le dépassement de pile signifie qu'il est coincé dans une boucle infinie quelque part (je suppose que quelque chose peut être foiré avec quelle vue saisit le focus/doit être dessiné). – Blaskovicz

+0

@Blaskovicz J'ai posté mon code source s'il vous plaît vérifier à nouveau – Newts

Répondre

1

Oh! J'ai compris, j'ai besoin de changer les valeurs de la zone de texte qui est facile pour moi. Beacuse ma mise en page dans l'onglet tab.Ainsi, il n'est pas en mesure d'effacer la pile de sorte que la meilleure façon d'effacer la pile, puis remplacer le nom de la vue du texte que nous voulons.

+1

+1 pour poster une solution à votre propre question lorsque vous résolvez votre propre problème, c'est une bonne pratique pour référence future et peut aider d'autres personnes – Guillaume

+2

Une réponse à votre propre question est seulement une bonne chose si c'est compréhensible. –