2016-06-23 6 views
1

이상한 (내게) NullPointerException 내 코드 오류, 실제 장치 (두 개의 전화 및 한 타블렛)에서만 발생하지만, emulators에서 작동합니다.애니메이션 안드로이드 NullPointerException

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    logo = (ImageView) findViewById(R.id.logo); 

    flyIn() 

} 
private void flyIn() { 
    animation = AnimationUtils.loadAnimation(this, R.anim.logo_animation);  //<-- this line here 
    logo.startAnimation(animation); 

} 

logo_animation은 다음과 같습니다 :

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fillAfter="true" 
    android:fillEnabled="true" > 

    <scale 
     android:duration="1500" 
     android:fromXScale="0.1" 
     android:fromYScale="0.1" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:toXScale="1" 
     android:toYScale="1" /> 

    <rotate 
     android:duration="1500" 
     android:fromDegrees="-270" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:toDegrees="0" /> 

    <alpha 
     android:duration="1500" 
     android:fromAlpha="0" 
     android:toAlpha="1" /> 

</set> 

스택 추적 :

:

06-21 23:46:07.844: E/AndroidRuntime(20983): FATAL EXCEPTION: main 
06-21 23:46:07.844: E/AndroidRuntime(20983): Process: example.animation, PID: 20983 
06-21 23:46:07.844: E/AndroidRuntime(20983): java.lang.RuntimeException: Unable to start activity ComponentInfo{example.animation/example.animation.Splash}: java.lang.NullPointerException 
06-21 23:46:07.844: E/AndroidRuntime(20983): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2436) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2498) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at android.app.ActivityThread.access$900(ActivityThread.java:179) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at android.os.Handler.dispatchMessage(Handler.java:102) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at android.os.Looper.loop(Looper.java:146) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at android.app.ActivityThread.main(ActivityThread.java:5641) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at java.lang.reflect.Method.invokeNative(Native Method) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at java.lang.reflect.Method.invoke(Method.java:515) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1288) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1104) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at dalvik.system.NativeStart.main(Native Method) 
06-21 23:46:07.844: E/AndroidRuntime(20983): Caused by: java.lang.NullPointerException 
06-21 23:46:07.844: E/AndroidRuntime(20983): at example.animation.Splash.flyIn(Splash.java:67) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at example.animation.Splash.onCreate(Splash.java:47) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at android.app.Activity.performCreate(Activity.java:5484) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
06-21 23:46:07.844: E/AndroidRuntime(20983): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2400) 
06-21 23:46:07.844: E/AndroidRuntime(20983): ... 11 more 

(Splash.java:67)이 라인 여기

코드입니다

누군가가 내게 무슨 일이 일어 났는지 설명 할 수 있습니까?

+0

'R'에 지정한 정보를 기반으로 사용자가 나열한 행에서 null이어야합니다. 초기화되었는지 확인하십시오. – lucasvw

+2

@lucasvw 안드로이드에서'R' 클래스는 자동으로 생성되며 항상 초기화됩니다. – shimatai

답변

1

@Sarah이 Android's Drawable Animation Guide을 바탕으로

, 당신이에서 onCreate에 startAnimation() 호출을 넣을 수 없습니다 나타납니다(). 가이드는 애니메이션 드로어 블 AnimationDrawable 객체에 대해 설명하지만,

애니메이션 드로어 블 AnimationDrawable 아직 완전하지 않기 때문에 그것의 애니메이션 드로어 블 AnimationDrawable에서 호출 시작() 메소드가 액티비티의에서 onCreate() 메소드 중에 호출 할 수 없음을주의하는 것이 중요하다 말한다 창문에 을 첨부하십시오.

나는 비슷한 일이 당신의 코드에서 일어나고 있다고 생각합니다. 이 가이드를 참조하면이 문제가 발생하지 않아야하는 애니메이션을 시작하는 또 다른 방법에 대해 설명합니다.

왜 에뮬레이터에서 작동합니까? 나는 잃어 버렸다. 에뮬레이터는 이상 할 수 있습니다.

+0

그래서, 어떻게 제대로 onCreate() 외부에서 호출 할 수 있습니까? – Sarah

+0

'onStart()'가 –

+0

일 때 시도해보십시오. 가이드는 onWindowFocusChanged() 안에 start()를 호출하는 것을 말합니다. 이게 당신 사건에 효과가 있습니까? – Tyler

관련 문제