关于更改视图可见性的StackOverflowError

时间:2016-03-22 12:51:21

标签: android performance android-layout

我正在开发一个应用程序,我在动态线性布局中添加几个视图,最后看起来像一个列表。在这个线性布局的每个孩子中,我有一个edittext和两个按钮。

最初可以看到第一项的编辑文本,而在所有其他项目中,edittext不可见。

点击任何这些按钮后,上一个项目中的edittext可见性消失,并将edittext的可见性更改为当前项目中可见。

现在这在大多数具有良好配置的设备中都非常好用,但在几乎所有较低系列的三星中崩溃,例如,Duos。

我尝试找到它的解决方案,但这里没有任何可用的答案对我有帮助,因为他们中的大多数都指导我查看我的观点并减少层次结构或寻找递归的发生。我在每种可能的方法中尝试过它。 / p>

我甚至尝试使用recyclerview和listview做同样的事情,而不是使用线性布局,但它显着增加了崩溃。

这是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

这就是我在做的事情:

 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) {

                    }

                }
            });

任何帮助将不胜感激。谢谢。

0 个答案:

没有答案