" resultIndex为-1,多边形必须无效!" adter addView()

时间:2015-10-17 15:44:49

标签: android android-view

在ViewGroup(FrameLayout)上调用addView()方法后出现异常。

public final View createView(Context context, Property property, ViewGroup parent) {
        mView = LayoutInflater.from(context).inflate(getLayout(), null);
        mContext = context;
        mProperty = property;
        processBaseViews(mView, property);
        processViews(mView, property);
        parent.addView(mView);
        return mView;
    }

例外:

10-17 18:39:40.060: E/OpenGLRenderer(511): resultIndex is -1, the polygon must be invalid!
10-17 18:39:40.061: A/libc(511): Fatal signal 7 (SIGBUS), code 1, fault addr 0x136 in tid 726 (hwuiTask1)

此代码在Android Lollipop(SDK< = 22)上正常运行,但在Android Marshmallow(SDK 23)上关闭时出错。我怎么能解决这个问题?

5 个答案:

答案 0 :(得分:4)

我也收到同样的错误同样的情况,代码在api中工作正常< 23只在api 23崩溃 我找到的是在我的代码中我将自定义动画设置为片段之前替换。()但是在 FIRST 替换和那么设置自定义动画之后才对我有效。这是我的代码片段

    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.replace(R.id.fragment_container, fragment);
    transaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
    transaction.commit();

答案 1 :(得分:1)

我收到相同的错误,仅限API 23且仅在真实设备上,请参阅我的问题https://github.com/davideas/FlipView/issues/9

在我的情况下,似乎在布局中设置提升,它会破坏翻转动画。

解决方法解决方案:我已经删除了提升,但没有必要。

答案 2 :(得分:1)

当您尝试开始为尚未附加到布局的视图设置动画时,会发生此错误。

但是,在API 23(Marshmellow)中的某些情况下,当您尝试对具有高程设置的某些视图进行动画处理时,无论如何,它似乎都缺少一个角落。

让我们说以下是您当前的代码:

<FrameLayout
   android:id="@+id/container"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:elevation="@dimen/custom_elevation" />
   container.animate()
            .scaleX(1f)
            .scaleY(1f)
            .setListener(null)
            .start();

在这种情况下,有两种解决方法:

  1. 从视图中删除高程
  2. 删除包含高程的动画
  3. 仅针对API 23删除海拔高度
  4. 仅删除API 23的动画
  5. 暂时删除高程并在动画结束后重新添加高程:
<FrameLayout
   android:id="@+id/container"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content" />
   container.animate()
            .scaleX(1f)
            .scaleY(1f)
            .setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    super.onAnimationEnd(animation);
                    final float elevation = container.getDimension(R.dimen.custom_elevation);
                    container.setElevation(elevation);
                }
            })
            .start();

答案 3 :(得分:0)

在我的情况下,我正在为ViewGroup的非添加子项的即将到来的属性动画设置cameraDistance,如下所示:

firstView.cameraDistance = firstView.width * 10f

宽度当然不存在,因为视图尚未添加并且布局(愚蠢的错误)导致cameraDistance为0。

这会产生相同的错误消息:

  

“resultIndex为-1,多边形必须无效!”

答案 4 :(得分:0)

该线程可能有点旧,但是在尝试为Honor设备上的CardView设置动画时遇到了相同的问题。将CardView更改为LinearLayout可以解决此问题(因此,它可能与CardView的默认高程有关。

希望它可以帮助某人!