java - 单击 ToggleButton 并调用函数时,Android 项目崩溃

标签 java android eclipse adt

出于某种原因,我无法弄清楚为什么我的项目在单击我的 ToggleButton 后没有响应。已经尝试了一切,但似乎无法让它发挥作用。有什么想法吗?

我在布局中的切换按钮:

<ToggleButton
    android:id="@+id/tglSound"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:checked="true"
    android:onClick="ToggleSound"
    android:textOff="Sound Off"
    android:textOn="Sound On"
    android:textSize="20sp"
    android:textStyle="bold" />

单击切换按钮并调用此函数时项目崩溃:

public void ToggleSound(){
    if (Global.btnSound.isChecked()){
        Global.snd.start();
    }
    else{
        Global.snd.pause();
    }
}

堆栈跟踪:

10-25 01:29:22.760: E/AndroidRuntime(18025): FATAL EXCEPTION: main
10-25 01:29:22.760: E/AndroidRuntime(18025): java.lang.IllegalStateException: Could not find a method ToggleSound(View) in the activity class com.garrenkeith.project.Menu for onClick handler on view class android.widget.ToggleButton with id 'tglSound'
10-25 01:29:22.760: E/AndroidRuntime(18025):    at android.view.View$1.onClick(View.java:3686)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at android.view.View.performClick(View.java:4223)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at android.widget.CompoundButton.performClick(CompoundButton.java:105)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at android.view.View$PerformClick.run(View.java:17281)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at android.os.Handler.handleCallback(Handler.java:615)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at android.os.Looper.loop(Looper.java:137)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at android.app.ActivityThread.main(ActivityThread.java:4898)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at java.lang.reflect.Method.invokeNative(Native Method)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at java.lang.reflect.Method.invoke(Method.java:511)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at dalvik.system.NativeStart.main(Native Method)
10-25 01:29:22.760: E/AndroidRuntime(18025): Caused by: java.lang.NoSuchMethodException: ToggleSound [class android.view.View]
10-25 01:29:22.760: E/AndroidRuntime(18025):    at java.lang.Class.getConstructorOrMethod(Class.java:460)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at java.lang.Class.getMethod(Class.java:915)
10-25 01:29:22.760: E/AndroidRuntime(18025):    at android.view.View$1.onClick(View.java:3679)
10-25 01:29:22.760: E/AndroidRuntime(18025):    ... 12 more

最佳答案

来自 Android Developers :

The method you declare in the android:onClick attribute must have a signature exactly as shown above. Specifically, the method must:

  • Be public
  • Return void
  • Define a View as its only parameter (this will be the View that was clicked)

尝试

public void ToggleSound(View v){
    // ...
}

关于java - 单击 ToggleButton 并调用函数时,Android 项目崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19582543/

相关文章:

java - 如何让其他类派生自单例类?

java - 当不同行在不同位置有空格时如何拆分基于空格的记录

android - 如何释放 TabHost 占用的内存

java - .SQLiteCantOpenDatabaseException : unknown error (code 14): Could not open database

java - 如何使用 Dagger ?

java - 我的数据库引用没有显示在树中

java - 子类的延迟初始化

android - 无法在 Android Studio 中使用 bundletool 生成 APK

java - 无需按 "run"按钮即可在 Eclipse 上自动运行 Java 类

java - SWT MessageBox 不显示正确的图标