StackOverflowError on changing view visibility

Viewed 298

I am working on a application where i am adding few views in a linear layout dynamically which at the end looks like a list. In each child of this linear layout i have a edittext and two buttons.

Initially edittext of first item is visible and in all other items edittext is not visible.

On click of any of these buttons make edittext visibility in previous item gone and change the visibility of a edittext as visible in current item.

Now this works pretty good in most of the devices having good configuration but crashes in almost all lower series of samsung eg.S Duos.

I tried finding its solution but none of the available answers here helped me as most of them direct me to look into my views and to reduce the hierarchy or to look for occurrence of recursion.I tried it in every possible approach.

I even tried doing the same thing using recyclerview and listview instead of using a linear layout but it increased the crash significantly.

Here is the stacktrace

java.lang.StackOverflowError
at android.text.method.ReplacementTransformationMethod$SpannedReplacementCharSequence.getSpans(ReplacementTransformationMethod.java:184)
at android.text.TextLine$SpanSet.init(TextLine.java:1059)
at android.text.TextLine.set(TextLine.java:290)
at android.text.Layout.getHorizontal(Layout.java:799)
at android.text.Layout.getHorizontal(Layout.java:778)
at android.text.Layout.getPrimaryHorizontal(Layout.java:762)
at android.widget.TextView.getFocusedRect(TextView.java:5436)
at android.view.FocusFinder.findNextFocus(FocusFinder.java:75)
at android.view.ViewGroup.focusSearch(ViewGroup.java:591)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.ViewGroup.focusSearch(ViewGroup.java:593)
at android.view.View.focusSearch(View.java:5190)
at android.widget.TextView.onCreateInputConnection(TextView.java:5987)
at android.view.inputmethod.InputMethodManager.startInputInner(InputMethodManager.java:1051)
at android.view.inputmethod.InputMethodManager.checkFocus(InputMethodManager.java:1214)
at android.view.inputmethod.InputMethodManager.isActive(InputMethodManager.java:631)
at android.widget.TextView.onDraw(TextView.java:5255)
at android.view.View.draw(View.java:11120)
at android.view.View.buildDrawingCache(View.java:10837)
at android.view.ViewGroup.drawChild(ViewGroup.java:2761)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2503)
at android.view.View.getDisplayList(View.java:10557)
at android.view.ViewGroup.drawChild(ViewGroup.java:2864)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2503)
at android.view.View.draw(View.java:11123)
at android.view.View.getDisplayList(View.java:10559)
at android.view.ViewGroup.drawChild(ViewGroup.java:2864)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2503)
at android.view.View.getDisplayList(View.java:10557)
at android.view.ViewGroup.drawChild(ViewGroup.java:2864)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2503)
at android.view.View.draw(View.java:11123)
at android.view.View.getDisplayList(View.java:10559)
at android.view.ViewGroup.drawChild(ViewGroup.java:2864)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2503)
at android.view.View.getDisplayList(View.java:10557)
at android.view.ViewGroup.drawChild(ViewGroup.java:2864)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2503)
at android.view.View.draw(View.java:11123)
at android.widget.FrameLayout.draw(FrameLayout.java:450)
at android.view.View.getDisplayList(View.java:10559)
at android.view.ViewGroup.drawChild(ViewGroup.java:2864)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2503)
at android.view.View.getDisplayList(View.java:10557)
at android.view.ViewGroup.drawChild(ViewGroup.java:2864)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2503)
at android.view.View.getDisplayList(View.java:10557)
at android.view.ViewGroup.drawChild(ViewGro

Here is what i am doing:

 ew_recharge.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           try {

                   if (clickOneItem != -1) {
                       try {
                             LinearLayout linearLayout = (LinearLayout) clickedPosAmount;
                             linearLayout.setVisibility(View.VISIBLE);
                             LinearLayout linearLayout_done = (LinearLayout) clickedPosDone;
                             linearLayout_done.setVisibility(View.GONE);
                             LinearLayout linearLayout_amount = (LinearLayout) v.getTag(R.id.amount_layout);
                             linearLayout_amount.setVisibility(View.GONE);
                             LinearLayout linearLayout_new_done = (LinearLayout) v.getTag(R.id.done_layout);
                                linearLayout_new_done.setVisibility(View.VISIBLE);
                            } catch (Exception e) {

                            }


                        } else {
                            try {
                                LinearLayout linearLayout = (LinearLayout) v.getTag(R.id.amount_layout);
                                linearLayout.setVisibility(View.GONE);
                                LinearLayout linearLayout_done = (LinearLayout) v.getTag(R.id.done_layout);
                                linearLayout_done.setVisibility(View.VISIBLE);
                            } catch (Exception e) {

                            }

                        }

                        clickOneItem = 1;
                        clickedPosAmount = v.getTag(R.id.amount_layout);
                        clickedPosDone = v.getTag(R.id.done_layout);

   //                            int posSel =                             Integer.parseInt(String.valueOf(v.getTag(R.id.first_recharge)));


                    } catch (Exception e) {

                    }

                }
            });

Any help will be much appreciated.thanks in advance.

0 Answers
Related