user2599233
user2599233

Reputation:

java.lang.StackOverflowError exception arises in some android devices

1181-1181/com.national.nhl E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.national.nhl, PID: 1181
java.lang.StackOverflowError
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5712)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
        at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)

I have used Tablelayout as an view that is shown on Alert Dialog like this,

    rowLink=(TableLayout)getLayoutInflater().inflate(R.layout.details, null);
    rowLink.addView(rowLink);
    ((ViewGroup)rowLink.getParent()).removeView(rowLink);


    tvrgp=(TextView)rowLink.findViewById(R.id.tvrgp);
    tvrg=(TextView)rowLink.findViewById(R.id.tvrg);
    tvra=(TextView)rowLink.findViewById(R.id.tvra);
    tvrp=(TextView)rowLink.findViewById(R.id.tvrp);
    tvrplusminus=(TextView)rowLink.findViewById(R.id.tvrplusminus);
    tvrpim=(TextView)rowLink.findViewById(R.id.tvrpim);
    try{
    Document doc = Jsoup.connect(temp).get(); //temp is url of webiste
                    Element regularseason = doc.getElementsByTag("table").get(3);
                    Elements tbody=regularseason.select("tbody");
                    Elements row = tbody.select("tr");
                    Element vrgp = row.select("td").get(1);
                    Element vrg = row.select("td").get(2);
                    Element vra = row.select("td").get(3);
                    Element vrp = row.select("td").get(4);
                    Element vrplusminus=row.select("td").get(5);
                    Element vrpim = row.select("td").get(6);

                    tvrgp.setText(vrgp.text().trim());
                    tvrg.setText(vrg.text().trim());
                    tvra.setText(vra.text().trim());
                    tvrp.setText(vrp.text().trim());
                    tvrplusminus.setText(vrplusminus.text().trim());
                    tvrpim.setText(vrpim.text().trim());

     }catch(Exception ex)
     { ex.printStackTrace();}




 new AlertDialog.Builder(LineUps.this)
                    .setTitle("player")
                    .setView(rowLink)
                    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    }).show();

its get data in my htc desire s shows all text-views on alertDialog and all the value that is fetch from internet, but when i run it on Emulator or other Android Devices it says force close with the above logcat, Help me if any one know the solution. Thanks in Advance

Edit:

Details.xml

android:id="@+id/row1"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">
<TextView
    android:textColor="#FFFFFF"
    android:id="@+id/statistics"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textStyle="bold"
    android:typeface="serif"
    android:textSize="18dp"
    android:background="#010101"
    android:gravity="center"
    android:padding="2dp"
    android:layout_span="3"></TextView>

android:id="@+id/row2"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">
<TextView
    android:background="#010101"
    android:textColor="#FFFFFF"
    android:id="@+id/titlenew"
    android:text=""
    android:gravity="center"
    android:textStyle="bold"
    android:typeface="serif"
    android:padding="4dp"
    android:layout_margin="1dp">

</TextView>
<TextView
    android:layout_margin="1dp"

    android:textColor="#FFFFFF"
    android:text="REGULAR SEASON"
    android:id="@+id/titleregular"

    android:textStyle="bold"

    android:layout_width="wrap_content"
    android:background="#010101"
    android:padding="4dp"></TextView>
<TextView
    android:layout_margin="1dp"

    android:textColor="#FFFFFF"
    android:text="LEAGUE RANK"
    android:id="@+id/titleleague"
    android:textStyle="bold"

    android:layout_width="wrap_content"
    android:background="#010101"
    android:padding="4dp"></TextView>

android:id="@+id/row3"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">




<TextView

    android:textColor="#FFFFFF"
    android:id="@+id/titlegp"
    android:text="GP"
    android:gravity="center"
    android:textStyle="bold"
    android:layout_margin="1dp"
    android:typeface="serif"
    android:background="#010101"
    android:padding="4dp"></TextView>
<TextView
    android:layout_margin="1dp"
    android:textColor="#FFFFFF"
    android:id="@+id/tvrgp"

    android:textStyle="bold"
    android:gravity="center_horizontal"
    android:background="#010101"
    android:padding="4dp"></TextView>
<TextView
    android:layout_margin="1dp"
    android:textColor="#FFFFFF"
    android:background="#010101"
    android:textStyle="bold"
    android:id="@+id/tvlgp"
    android:gravity="center_horizontal"
    android:padding="4dp"></TextView>

android:id="@+id/row4"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">



<TextView

    android:textColor="#FFFFFF"
    android:id="@+id/titleg"
    android:text="G"
    android:layout_margin="1dp"
    android:gravity="center"
    android:textStyle="bold"
    android:typeface="serif"
    android:background="#010101"
    android:padding="4dp"></TextView>
<TextView
    android:layout_margin="1dp"
    android:textColor="#FFFFFF"

    android:textStyle="bold"
    android:id="@+id/tvrg"
    android:gravity="center_horizontal"
    android:background="#010101"
    android:padding="4dp"></TextView>
<TextView
    android:layout_margin="1dp"
    android:textColor="#FFFFFF"
    android:background="#010101"
    android:textStyle="bold"
    android:id="@+id/tvlg"
    android:gravity="center_horizontal"
    android:padding="4dp"></TextView>

android:id="@+id/row5"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">
<TextView
    android:layout_margin="1dp"

    android:textColor="#FFFFFF"
    android:id="@+id/titlea"
    android:gravity="center"
    android:text="A"
    android:textStyle="bold"
    android:typeface="serif"
    android:background="#010101"
    android:padding="4dp"></TextView>

<TextView
    android:layout_margin="1dp"
    android:textColor="#FFFFFF"

    android:textStyle="bold"
    android:id="@+id/tvra"
    android:gravity="center_horizontal"
    android:background="#010101"
    android:padding="4dp"></TextView>
<TextView

    android:textColor="#FFFFFF"
    android:layout_margin="1dp"
    android:background="#010101"
    android:textStyle="bold"
    android:id="@+id/tvla"
    android:gravity="center_horizontal"
    android:padding="4dp"></TextView>

android:id="@+id/row6"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">
<TextView
    android:layout_margin="1dp"

    android:textColor="#FFFFFF"
    android:id="@+id/titlep"
    android:text="P"
    android:gravity="center"
    android:textStyle="bold"
    android:typeface="serif"
    android:background="#010101"
    android:padding="4dp"></TextView>
<TextView
    android:layout_margin="1dp"
    android:textColor="#FFFFFF"
    android:background="#010101"
    android:textStyle="bold"
    android:id="@+id/tvrp"
    android:gravity="center_horizontal"
    android:padding="4dp"></TextView>
<TextView
    android:layout_margin="1dp"
    android:textColor="#FFFFFF"
    android:background="#010101"
    android:textStyle="bold"
    android:id="@+id/tvlp"
    android:gravity="center_horizontal"
    android:padding="4dp"></TextView>

android:id="@+id/row7"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">
<TextView
    android:layout_margin="1dp"

    android:textColor="#FFFFFF"
    android:id="@+id/titleplusminus"
    android:text="+/-"
    android:gravity="center"
    android:textStyle="bold"
    android:typeface="serif"
    android:background="#010101"
    android:padding="4dp"></TextView>
<TextView
    android:layout_margin="1dp"
    android:textColor="#FFFFFF"
    android:background="#010101"
    android:textStyle="bold"
    android:id="@+id/tvrplusminus"
    android:gravity="center_horizontal"
    android:padding="4dp"></TextView>
<TextView
    android:layout_margin="1dp"
    android:textColor="#FFFFFF"
    android:background="#010101"
    android:textStyle="bold"
    android:id="@+id/tvlplusminus"
    android:gravity="center_horizontal"
    android:padding="4dp"></TextView>

android:id="@+id/row8"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">
<TextView
    android:layout_margin="1dp"

    android:textColor="#FFFFFF"
    android:text="PIM"
    android:id="@+id/titlepim"
    android:gravity="center"
    android:textStyle="bold"
    android:typeface="serif"
    android:background="#010101"
    android:padding="4dp"></TextView>
<TextView
    android:layout_margin="1dp"
    android:textColor="#FFFFFF"
    android:background="#010101"
    android:textStyle="bold"
    android:id="@+id/tvrpim"
    android:gravity="center_horizontal"
    android:padding="4dp"></TextView>
<TextView
    android:layout_margin="1dp"
    android:textColor="#FFFFFF"
    android:background="#010101"
    android:textStyle="bold"
    android:id="@+id/tvlpim"
    android:gravity="center_horizontal"
    android:padding="4dp"></TextView>




</TableRow>

Upvotes: 2

Views: 4182

Answers (2)

nikis
nikis

Reputation: 11234

I think the problem is here:

rowLink.addView(rowLink);
((ViewGroup)rowLink.getParent()).removeView(rowLink);

Looks like by following this code you create cyclic dependency, that is why you get StackOverflow error. You should have 2 separate Views: 1st for container, 2nd for content. TableLayout should contain TableRows, which can contain TextViews, for example.

Upvotes: 3

Lavekush
Lavekush

Reputation: 6166

I think You have (way) too many nested layouts. You can check out the official Android blog at d.android.com to get tips and tricks on how to optimize layouts.

There are two ways to do this Split your code into different xmls then

  1. Use Fragments : refer thins link Need detailed explanation on android fragments
  2. Use include tag : refer this link: Nested tag

Upvotes: 0

Related Questions