2016-03-14 4 views
2

У меня есть анимация с флеш-картами между двумя фрагментами, которые вызывают среднюю анимацию. Я попытался установить точку прерывания, в которой происходят анимации (Новое для отладки анимаций, сообщите мне, основываясь на моем коде ниже, где я должен установить точку останова), однако мне не удавалось точно определить виновника. Только сообщения об ошибках я получаю, когда происходит сбой приложения следующим образом:A/OpenGLRenderer: Ошибка: переполнение буфера индекса окружения

A/OpenGLRenderer: Error: Ambient Index Buffer overflow!!! used 300, total 298

A/libc: Fatal signal 5 (SIGTRAP), code 1 in tid 9338 (hwuiTask2)

import android.animation.AnimatorInflater; 
import android.animation.AnimatorSet; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.os.Handler; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
public class AnswerActivity extends AppCompatActivity implements FragmentManager.OnBackStackChangedListener { 

private AnimatorSet mSetRightOut; 
private AnimatorSet mSetLeftIn; 

private View mCardFrontLayout; 
private View mCardBackLayout; 

private Handler mHandler = new Handler(); 
private boolean mIsBackVisible = false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_answer_activity); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FragmentManager manager = getFragmentManager(); 

    if (savedInstanceState == null) { 
     FragmentTransaction transaction = manager.beginTransaction(); 

    //  transaction.add(R.id.q_fragment, questionFragment, "fragmentQ"); 
     transaction.add(R.id.q_fragment, SingleQuestionFragment.newInstance()); 
    //  transaction.add(R.id.a_fragment, answerFragment, "fragmentA"); 
    //   transaction.add(R.id.a_fragment, SingleAnswerFragment.newInstance()); 
     transaction.add(R.id.a_fragment, new CardFront()); 
     transaction.commit(); 

     //right spot? 
    //   findViews(); 
    //   loadAnimations(); 
    //   changeCameraDistance(); 

    } else { 
     mIsBackVisible = (getFragmentManager().getBackStackEntryCount() > 0); 
    } 

    getFragmentManager().addOnBackStackChangedListener(this); 

} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
} 

private void changeCameraDistance() { 
    int distance = 8000; 
    float scale = getResources().getDisplayMetrics().density * distance; 
    mCardFrontLayout.setCameraDistance(scale); 
    mCardBackLayout.setCameraDistance(scale); 
} 

private void loadAnimations() { 
    mSetRightOut = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.out_animation); 
    mSetLeftIn = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.in_animation); 
} 

private void findViews() { 
    mCardBackLayout = findViewById(R.id.card_back); 
    mCardFrontLayout = findViewById(R.id.card_front); 
} 

public void flipCard(View view) { 
//  if (!mIsBackVisible) { 
//   mSetRightOut.setTarget(mCardFrontLayout); 
//   mSetLeftIn.setTarget(mCardBackLayout); 
//   mSetRightOut.start(); 
//   mSetLeftIn.start(); 
//   mIsBackVisible = true; 
//  } else { 
//   mSetRightOut.setTarget(mCardBackLayout); 
//   mSetLeftIn.setTarget(mCardFrontLayout); 
//   mSetRightOut.start(); 
//   mSetLeftIn.start(); 
//   mIsBackVisible = false; 
//  } 

    if(mIsBackVisible) { 
     getFragmentManager().popBackStack(); 
     return; 
    } 

    mIsBackVisible = true; 

    getFragmentManager() 
      .beginTransaction() 
    //    .setCustomAnimations(R.anim.new_in_animation, R.anim.new_out_animation) 
      .setCustomAnimations(R.animator.in_animation, R.animator.out_animation) 
      .replace(R.id.a_fragment, SingleAnswerFragment.newInstance()) 
      .addToBackStack(null) 
      .commit(); 


} 

@Override 
public void onBackStackChanged() { 
    mIsBackVisible = (getFragmentManager().getBackStackEntryCount() > 0); 
} 

} 
+2

Вы выяснили, что привело к аварии? Я столкнулся с аналогичной ошибкой: «Фатальный сигнал 6 (SIGABRT), код -6 в tid 10933 (hwuiTask1)» – tufekoi

+0

да, мне пришлось изменить целевую api, я пытался использовать версию поддержки фрагментов, которые могли бы расширить охват на понижает числа api. Я не мог использовать версию поддержки. Также я избавился от этой неприятной реализации попыток контролировать стопку фрагментов –

+3

Ошибка произошла только на samsung s7 для меня, оказалось, что это было потому, что я использовал «CardLayout» для корневого узла на своих фрагментах. После замены «FrameLayout» все работает отлично – tufekoi

ответ

2

Я последовал за решение tufekoi и изменил мой корневой макет из cardView в FrameLayout, и она работала, просто.

Смежные вопросы