2012-05-22 57 views
0

当视图被删除,发生的错误,我无法找到错误的原因:如何去除去Android

**java:** 

    package com.test; 
    import android.app.Activity; 
    import android.os.Bundle; 
    import android.util.Log; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.view.animation.AlphaAnimation; 
    import android.view.animation.Animation; 
    import android.view.animation.Animation.AnimationListener; 
    import android.widget.ImageView; 

    public class AnimationActivity extends Activity { 
     ImageView imageView = null; 
     ViewGroup viewGroup = null; 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      imageView = (ImageView)findViewById(R.id.imageviewID); 
      viewGroup = (ViewGroup)findViewById(R.id.layoutId); 
     } 
     public void buttonOnclick(View e){ 
      int id = e.getId(); 
      if(id==R.id.alpha){ 
       AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0f); 
       alphaAnimation.setDuration(5000); 
       alphaAnimation.setStartOffset(500); 
       alphaAnimation.setFillAfter(true); 
       alphaAnimation.setFillBefore(false); 
       alphaAnimation.setAnimationListener(new RemoveAnimationListener()); 
       imageView.startAnimation(alphaAnimation); 
       Log.d("mydebug","imageView------------>"+imageView); 
       Log.d("mydebug","viewGroup------------>"+viewGroup); 
      } 
     } 
     private class RemoveAnimationListener implements AnimationListener{ 

      @Override 
      public void onAnimationEnd(Animation animation) { 
       // TODO Auto-generated method stub 
       viewGroup.removeView(imageView); 

      } 
      @Override 
      public void onAnimationRepeat(Animation animation) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onAnimationStart(Animation animation) { 
       // TODO Auto-generated method stub 

      } 
     } 
    } 

下面是错误的:

05-22 10:01:16.367: W/dalvikvm(1839): threadid=1: thread exiting with uncaught exception (group=0x4001d7c8)ss 
    05-22 10:01:16.397: E/AndroidRuntime(1839): FATAL EXCEPTION: main 
    05-22 10:01:16.397: E/AndroidRuntime(1839): java.lang.NullPointerException 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1366) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.ViewGroup.drawChild(ViewGroup.java:1638) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.View.draw(View.java:6743) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.widget.FrameLayout.draw(FrameLayout.java:352) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.ViewGroup.drawChild(ViewGroup.java:1640) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.ViewGroup.drawChild(ViewGroup.java:1638) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.View.draw(View.java:6743) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.widget.FrameLayout.draw(FrameLayout.java:352) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1857) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.ViewRoot.draw(ViewRoot.java:1407) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1163) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.os.Handler.dispatchMessage(Handler.java:99) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.os.Looper.loop(Looper.java:123) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at java.lang.reflect.Method.invokeNative(Native Method) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at java.lang.reflect.Method.invoke(Method.java:521) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    05-22 10:01:16.397: E/AndroidRuntime(1839):  at dalvik.system.NativeStart.main(Native Method) 
+0

尝试注释Log.d(“mydebug”,“imageView ------------>”+ imageView); Log.d(“mydebug”,“viewGroup ------------>”+ viewGroup); 行 –

+0

按钮指向您正在删除的视图中的“buttonOnclick”方法吗? – Barak

回答

0

你必须使用buttononclick方法在你的AnimationActivity类中。所以,如果你有 提到哪个按钮点击你的XML文件,那么很好。如果您在XML中没有提到
哪个按钮是点击的,那么您必须在您的活动中提及哪个按钮 单击以便进行相应的方法调用。还有一件事是,如果它没有 查找视图组,使它显示空指针异常。您正试图访问或使用视图组,该视图组的值为空或未找到。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layoutId" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ImageView android:id="@+id/imageviewID" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" 
     android:contentDescription="@string/app_name" 
     android:paddingBottom="50dip" 
     /> 
    <Button android:id="@+id/alpha" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/alpha" 
     android:onClick="buttonOnclick" 
     android:layout_below="@id/imageviewID" 
     /> 
</RelativeLayout> 
+0

谢谢,你提醒我 – user1409138

0

你先按下按钮,viewgroup会移除imageview,然后viewgroup不包含Imageview;如果你第二次按下按钮,imageview为空,所以你不能从视图组中删除imageview。