2013-04-04 111 views
3

我是Android開發新手。我編寫了這段代碼,但我無法弄清楚是什麼導致我的應用程序崩潰。它告訴我該活動無法暫停。我確信這是我要拋棄的東西。我寫過非常相似的代碼,這些代碼在過去都有效,所以我不確定從哪裏開始。無法暫停活動?

SplashActivity.java

public class SplashActivity extends Activity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_splash); 

     ImageView logo = (ImageView) findViewById(R.id.ImageViewLogo); 
     Animation twistIn = AnimationUtils.loadAnimation(this, R.anim.twist_in); 
     logo.startAnimation(twistIn); 
     twistIn.setAnimationListener(new AnimationListener() 
     { 
      public void onAnimationStart(Animation animation) 
      { 
       return; // do nothing 
      } 
      public void onAnimationRepeat(Animation animation) 
      { 
       return; // do nothing 
      } 
      public void onAnimationEnd(Animation animation) 
      { 
       startActivity(new Intent(SplashActivity.this, MenuActivity.class)); 
       SplashActivity.this.finish(); 
      } 
     }); 
    } 

    @Override 
    protected void onPause() 
    { 
     super.onPause(); 

     TextView logo = (TextView) findViewById(R.id.ImageViewLogo); 
     logo.clearAnimation(); 
    } 
} 

而這裏的logcat的抱怨:

04-04 02:09:10.460: W/dalvikvm(12531): threadid=1: thread exiting with uncaught exception (group=0x4001e578) 
04-04 02:09:10.480: E/AndroidRuntime(12531): FATAL EXCEPTION: main 
04-04 02:09:10.480: E/AndroidRuntime(12531): java.lang.RuntimeException: Unable to pause activity {com.swapwords/com.swapwords.SplashActivity}: java.lang.ClassCastException: android.widget.ImageView 
04-04 02:09:10.480: E/AndroidRuntime(12531): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2358) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2315) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2295) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at android.app.ActivityThread.access$1700(ActivityThread.java:117) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:942) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at android.os.Looper.loop(Looper.java:130) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at android.app.ActivityThread.main(ActivityThread.java:3691) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at java.lang.reflect.Method.invokeNative(Native Method) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at java.lang.reflect.Method.invoke(Method.java:507) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at dalvik.system.NativeStart.main(Native Method) 
04-04 02:09:10.480: E/AndroidRuntime(12531): Caused by: java.lang.ClassCastException: android.widget.ImageView 
04-04 02:09:10.480: E/AndroidRuntime(12531): at com.swapwords.SplashActivity.onPause(SplashActivity.java:57) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at android.app.Activity.performPause(Activity.java:3893) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1194) 
04-04 02:09:10.480: E/AndroidRuntime(12531): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2345) 
04-04 02:09:10.480: E/AndroidRuntime(12531): ... 12 more 
04-04 02:09:12.452: I/dalvikvm(12531): threadid=4: reacting to signal 3 
04-04 02:09:12.452: I/dalvikvm(12531): Wrote stack traces to '/data/anr/traces.txt' 
04-04 02:09:18.878: I/dalvikvm(12531): threadid=4: reacting to signal 3 
04-04 02:09:18.878: I/dalvikvm(12531): Wrote stack traces to '/data/anr/traces.txt' 

我只是失去了。

回答

3

使用

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

,而不是

onPause()方法
TextView logo = (TextView) findViewById(R.id.ImageViewLogo); 

,因爲您正在嘗試投放ImageView(你在XML的佈局都添加)到TextView

+0

噢 - 嗬 - 嗬哇。謝謝! – 2013-04-04 06:22:23

2

您正在嘗試將ImageView與Textview引用 因此它會拋出ClassCastException

更改此

TextView logo = (TextView) findViewById(R.id.ImageViewLogo); 

這個

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

見的OnCreate這一行()方法

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

而且的onPause()方法使用已經寫TextView的,而不是ImageView像上面

TextView logo = (TextView) findViewById(R.id.ImageViewLogo); 

因此,這是給你classcast例外..更改的TextView到ImageView的