2012-03-08 90 views
2

我试图做一个简单的动画与ImageButtons,当我设置它,以便如果我只是触摸屏幕,它的工作原理就好,但如果我尝试要做到onClick,应用程序就会关闭。强制关闭onClick的ImageButton,无法弄清楚为什么

main.xml中

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_horizontal"> 
     <ImageButton 
     android:id="@+id/plus1" 
     android:layout_width="75dp" 
     android:layout_height="75dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:background="@null" 
     android:src="@drawable/plus" 
     android:visibility="visible" 
     android:gravity="center_horizontal" 
     android:onClick="RunAnimations" 
     /> 

    <ImageButton 
     android:id="@+id/gears1" 
     android:layout_width="75dp" 
     android:layout_height="75dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:background="@null" 
     android:gravity="center_horizontal" 
     android:src="@drawable/gears" 
     android:textSize="42sp" /> 
    </LinearLayout> 

translate.xml

<?xml version="1.0" encoding="utf-8"?> 
<set> 
<translate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromYDelta="-100%" 
    android:toYDelta="0%" 
    android:duration="1000" 
    android:zAdjustment="top" > 
</translate> 

<alpha 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromAlpha="0.0" 
    android:toAlpha="1.0" 
    android:duration="1000"> 
</alpha> 
</set> 

主要活动:

 

    public class AnimationtestActivity extends Activity { 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
     } 
     private void RunAnimations() { 
      Animation a = AnimationUtils.loadAnimation(this, R.anim.translate); 
      View ib = findViewById(R.id.gears1); 
      ib.clearAnimation(); 
      ib.startAnimation(a);  
     } 
    } 

编辑:

我固定 私人无效茹nAnimations(查看视图)

但它仍然是强制关闭

编辑2:logcat的

03-08 13:07:33.968: E/AndroidRuntime(29270): FATAL EXCEPTION: main 
03-08 13:07:33.968: E/AndroidRuntime(29270): java.lang.IllegalStateException: Could not find a method RunAnimations(View) in the activity class com.test.AnimationtestActivity for onClick handler on view class android.widget.ImageButton with id 'plus1' 
03-08 13:07:33.968: E/AndroidRuntime(29270): at android.view.View$1.onClick(View.java:3026) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at android.view.View.performClick(View.java:3480) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at android.view.View$PerformClick.run(View.java:13983) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at android.os.Handler.handleCallback(Handler.java:605) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at android.os.Handler.dispatchMessage(Handler.java:92) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at android.os.Looper.loop(Looper.java:137) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at android.app.ActivityThread.main(ActivityThread.java:4340) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at java.lang.reflect.Method.invokeNative(Native Method) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at java.lang.reflect.Method.invoke(Method.java:511) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at dalvik.system.NativeStart.main(Native Method) 
03-08 13:07:33.968: E/AndroidRuntime(29270): Caused by: java.lang.NoSuchMethodException: RunAnimations [class android.view.View] 
03-08 13:07:33.968: E/AndroidRuntime(29270): at java.lang.Class.getConstructorOrMethod(Class.java:460) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at java.lang.Class.getMethod(Class.java:915) 
03-08 13:07:33.968: E/AndroidRuntime(29270): at android.view.View$1.onClick(View.java:3019) 
03-08 13:07:33.968: E/AndroidRuntime(29270): ... 11 more 

回答

3

框架没有找到您单击处理方法,因为它的签名错误的内容。声明它是这样的:

public void RunAnimations(View view) { 
    . . . 
} 
+0

我修正了这个问题,但它仍然给我一个力量关闭。任何其他想法? – Lucas 2012-03-08 18:07:58

+0

你收到的例外情况是什么?你可以发布日志吗? – arjoan 2012-03-08 18:16:11

+0

我在问题中发布了logcat,感谢迄今的帮助 – Lucas 2012-03-08 18:22:39

相关问题