2012-05-24 5 views
0

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

private Animation slideLeftIn; 
private Animation slideLeftOut; 
private Animation slideRightIn; 
private Animation slideRightOut; 

       private void swipeInit() { 

        viewFlipper = (ecm2.android.ContentViewFlipper) findViewById(R.id.statusFlipper); 
        slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in); 
// line 2366  slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out); //error 
        slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in); 
        slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out); 
} 

ошибка журнал

java.lang.RuntimeException: Unable to start activity ComponentInfo{ecm2.android/ecm2.android.MainActivity}: java.lang.ClassCastException: android.widget.ViewFlipper 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1833) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1854) 
at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1041) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:150) 
at android.app.ActivityThread.main(ActivityThread.java:4333) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassCastException: android.widget.ViewFlipper 
at ecm2.android.MainActivity.swipeInit(MainActivity.java:2366) 
at ecm2.android.MainActivity.onCreate(MainActivity.java:837) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1797) 

журнал утверждает, что его в строке 2366, которая заходящая один из анимации, но это делает один штраф до этого, так что я не уверен, что проблема здесь

анимация XML

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="300"/> 

все это началось, когда я перешел на пользовательский viewflipper, чтобы обойти ошибку Android. Я действительно не делать ничего в нем, кроме попытаться поймать исключение в onDetachedFromWindow он делает все это нормально будет, так как я называю супер во всем, я использую

EDIT:

класс ContentViewFlipper

public class ContentViewFlipper extends ViewFlipper { 
//class is used to try to prevent force closes on certain phone where the onDetachFromWindow would be 
//called when its not suppose to, this is an android bug 

public ContentViewFlipper(Context context) { 
    super(context); 
} 

public ContentViewFlipper(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

@Override 
protected void onDetachedFromWindow() { 
     try { 
     super.onDetachedFromWindow(); 
     } 
     catch(Exception e) { 
      stopFlipping(); 
     } 
    } 
} 

декларация из viewFlipper

private ContentViewFlipper viewFlipper; 

XML

<ecm2.android.ContentViewFlipper 
    android:id="@+id/statusFlipper" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <LinearLayout 
     android:id="@+id/incLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginBottom="40dp" 
     android:orientation="vertical" > 

     <ListView 
      android:id="@+id/lvIncidents" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="50dp" 
      android:divider="@drawable/divider" 
      android:dividerHeight="2dip" 
      android:visibility="visible" > 
     </ListView> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/statusLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" android:layout_marginBottom="40dp"> 

     <ListView 
      android:id="@+id/lvStatus" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:choiceMode="singleChoice" 
      android:divider="@drawable/divider" 
      android:dividerHeight="2dip" 
      android:visibility="visible" android:layout_marginTop="50dp"> 
     </ListView> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/dlLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" android:layout_marginBottom="40dp"> 

     <ListView 
      android:id="@+id/lvDistList" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:divider="@drawable/divider" 
      android:dividerHeight="2dip" 
      android:visibility="visible" android:layout_marginTop="50dp"> 
     </ListView> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/emNotesLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" android:layout_marginBottom="40dp"> 

     <ListView 
      android:id="@+id/lvEmNotes" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" android:layout_marginTop="50dp"> 
     </ListView> 

    </LinearLayout> 


    <LinearLayout 
     android:id="@+id/stCalenLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" android:layout_marginBottom="40dp"> 

     <ListView 
      android:id="@+id/lvStCalendar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" android:layout_marginTop="50dp"> 
     </ListView> 

    </LinearLayout> 

</ecm2.android.ContentViewFlipper> 

ответ

0

Я предполагаю, что может быть некоторая путаница с номером строки и что ваш объект viewFlipper определяется как ViewFlipper viewFlipper, что может быть проблемой, когда вы отбрасываете его из ecm2.android.ContentViewFlipper, если это не decendent.

+0

nope 'viewFilpper' - это форма' ContentViewFlipper' и мой XML с рефлексией ViewFlipper, который тоже – tyczj

+0

проклятый надеялся, что это может быть так просто, что произойдет, если вы измените анимацию на R.anim.slide_left_in? – MikeIsrael

+0

хорошо, я не знаю, что я не могу воспроизвести проблему, так как это работает на моих устройствах. – tyczj

0

Поскольку исключение говорит о том, что произошла ошибка, отличная от android.widget.ViewFlipper, я уверен, что любая сторона линии viewFlipper = ... имеет неправильный тип.

Либо переменная viewFlipper является android.widget.ViewFlipper и контроль от макета является ecm2.android.ContentViewFlipper и не может быть приведен к android.widget.ViewFlipper, либо управление в макете является android.widget.ViewFlipper, который не может быть приведен к ecm2.android.ContentViewFlipper.

На какой строке действительно возникает ошибка при однократном выполнении кода в режиме отладки после установки точки останова на строку viewFlipper = ...?

+0

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

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