Android: Проблемы при переходе на следующую .java? - PullRequest
1 голос
/ 25 января 2011

Я немного запутался ... После анимации на заставке предполагается запустить функцию намерения для работы со следующим файлом активности .java ... но когда он запускается после заставки в эмуляторе, онне будет работать.Я открыл Logcat, и он сказал что-то вроде java.lang.nullpointer и исключения времени выполнения, работающего с функцией паузы ... Кто-нибудь может мне это объяснить?Спасибо.

package com.unicorn.test.whee;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;


public class SplashScreenPear extends Activity {
ImageView pearfade;
/** Called when the activity is first created. */

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pear); }

private void startAnimating(){
  Animation pearfadeact = AnimationUtils.loadAnimation(this, R.anim.fadein);
  ImageView pearfade = (ImageView) findViewById(R.id.pearish);
pearfadeact.setAnimationListener(new AnimationListener(){

    public void onAnimationEnd(Animation animation) {
        // The animation has ended, transition to the Main Menu screen
        startActivity(new Intent(SplashScreenPear.this, Unicorn.class));
        SplashScreenPear.this.finish(); }

        public void onAnimationRepeat(Animation animation) {
        }

        public void onAnimationStart(Animation animation) {
        }
    });

pearfade.startAnimation(pearfadeact); 
}

 @Override
 protected void onPause() {
     super.onPause();
     pearfade.clearAnimation();  
 }
     @Override
     protected void onResume() {
     super.onResume();
     startAnimating();
     }



 }

Logcat:

01-24 23:54:22.040: INFO/ActivityManager(74): Displayed com.unicorn.test.whee/.SplashScreenPear: +2s317ms (total +2m20s769ms)
01-24 23:54:25.790: INFO/ActivityManager(74): Starting: Intent { cmp=com.unicorn.test.whee/.Unicorn } from pid 579
01-24 23:54:25.790: DEBUG/AndroidRuntime(579): Shutting down VM
01-24 23:54:25.790: WARN/dalvikvm(579): threadid=1: thread exiting with uncaught    exception (group=0x40015560)
01-24 23:54:25.790: ERROR/AndroidRuntime(579): FATAL EXCEPTION: main
01-24 23:54:25.790: ERROR/AndroidRuntime(579): java.lang.RuntimeException: Unable to pause activity {com.unicorn.test.whee/com.unicorn.test.whee.SplashScreenPear}: java.lang.NullPointerException
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2329)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2286)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2266)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at android.app.ActivityThread.access$1700(ActivityThread.java:117)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at android.os.Looper.loop(Looper.java:123)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at android.app.ActivityThread.main(ActivityThread.java:3647)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at java.lang.reflect.Method.invokeNative(Native Method)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at java.lang.reflect.Method.invoke(Method.java:507)  
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at dalvik.system.NativeStart.main(Native Method)
01-24 23:54:25.790: ERROR/AndroidRuntime(579): Caused by: java.lang.NullPointerException
 01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at com.unicorn.test.whee.SplashScreenPear.onPause(SplashScreenPear.java:50)
 01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at android.app.Activity.performPause(Activity.java:3853)
 01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1190)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2316)
01-24 23:54:25.790: ERROR/AndroidRuntime(579):     ... 12 more
01-24 23:54:26.339: WARN/ActivityManager(74): Activity pause timeout for HistoryRecord{4067cb18 com.unicorn.test.whee/.SplashScreenPear}
 01-24 23:54:28.169: INFO/Process(579): Sending signal. PID: 579 SIG: 9
01-24 23:54:28.210: INFO/ActivityManager(74): Process com.unicorn.test.whee (pid 579) has died.
01-24 23:54:28.230: ERROR/InputDispatcher(74): channel '405fa740 com.unicorn.test.whee/com.unicorn.test.whee.SplashScreenPear (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
01-24 23:54:28.230: ERROR/InputDispatcher(74): channel '405fa740 com.unicorn.test.whee/com.unicorn.test.whee.SplashScreenPear (server)' ~ Channel is unrecoverably broken and will be disposed!

Ответы [ 4 ]

1 голос
/ 25 января 2011

Ну, у вас есть исключение NullPointerException. Вероятно, это связано с тем, что в вашем методе startAnimating есть следующий код:

ImageView pearfade = (ImageView) findViewById(R.id.pearish)

Это объявление переменной скрывает определение переменной вашего члена класса. Вы должны исправить это. :)

1 голос
/ 25 января 2011

Doh!

private void startAnimating()
{
  Animation pearfadeact = AnimationUtils.loadAnimation(this, R.anim.fadein);

ImageView pearfade = (ImageView) findViewById(R.id.pearish);

... 
}

Удалите это изображение, которое я выделил.Проблема заключалась в том, что вы создаете локальную переменную, когда у вас уже был член с таким же именем

0 голосов
/ 25 января 2011

Я думаю, что в onPause pearfade.clearAnimation(); равно нулю, основываясь на
01-24 23:54:25.790: ERROR/AndroidRuntime(579): Caused by: java.lang.NullPointerException
01-24 23:54:25.790: ERROR/AndroidRuntime(579): at com.unicorn.test.whee.SplashScreenPear.onPause(SplashScreenPear.java:5

в вашем журнале

0 голосов
/ 25 января 2011

я думаю, что ваш пробник находится на линии perfade.clearAnimation (), удалите его из паузы


отредактировано : другой способ - установить декларацию, как указано выше, для создания ImageView perfade;


и чем использовать это в методе startanimating:


 pearfade = (ImageView) findViewById(R.id.pearish);
...