android - 编译器看不到新方法名称 - 构建问题但运行时错误。 "java.lang.IllegalStateException: Could not find a method"

标签 android methods runtime-error android-gradle-plugin build.gradle

我以常规方式从现有类创建了一个新的 Activity 类,然后从我的 ScanActivity.class 中剪切并粘贴了代码,因为新类将非常相似。

新类是 SenderActivity2.class。我还更改了 XML onClick 处理程序,使其具有 onPicButtonClicked 监听器,而不是 ScanActivity 类的 onScanButtonClicked。

gradle 构建和项目构建一样有效,但在运行时单击按钮失败。

您可以在 logcat 中看到它仍在寻找 onScanButtonClicked 方法。我实际上进去并将方法名称改回 onScanButtonClicked 即使该方法在另一个类中以查看它是否会以某种方式工作。它做了。此外,当我第一次创建新类并自动生成 XML 时,为 XML 创建的名称存在问题。我认为这可能是问题根源的重要线索。我删除了主目录中的 .gradle 文件并强制它重建所有内容,但这没有帮助。希望你们中的一些人遇到过类似的事情。我知道某处有一个文件需要重建..只是不知道它是什么或在哪里。

01-29 22:19:57.714  12606-12606/com.blissbot.hallmarktest I/SELinux﹕ Function: selinux_android_load_priority [0], There is no sepolicy file.
01-29 22:19:57.714  12606-12606/com.blissbot.hallmarktest I/SELinux﹕ Function: selinux_android_load_priority , loading version is VE=SEPF_SPH-L720T_4.4.2_0032
01-29 22:19:57.714  12606-12606/com.blissbot.hallmarktest I/SELinux﹕ selinux_android_seapp_context_reload: seapp_contexts file is loaded from /data/security/spota/seapp_contexts
01-29 22:19:57.714  12606-12606/com.blissbot.hallmarktest D/dalvikvm﹕ Late-enabling CheckJNI
01-29 22:19:57.844  12606-12606/com.blissbot.hallmarktest W/ApplicationPackageManager﹕ getCSCPackageItemText()
01-29 22:19:57.904  12606-12606/com.blissbot.hallmarktest E/MoreInfoHPW_ViewGroup﹕ Parent view is not a TextView
01-29 22:19:58.014  12606-12606/com.blissbot.hallmarktest I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:381>: EGL 1.4 QUALCOMM build:  (CL3869936)
    OpenGL ES Shader Compiler Version: 17.01.11.SPL
    Build Date: 01/17/14 Fri
    Local Branch:
    Remote Branch:
    Local Patches:
    Reconstruct Branch:
01-29 22:19:58.064  12606-12606/com.blissbot.hallmarktest D/OpenGLRenderer﹕ Enabling debug mode 0
01-29 22:20:00.066  12606-12606/com.blissbot.hallmarktest W/ApplicationPackageManager﹕ getCSCPackageItemText()
01-29 22:20:00.086  12606-12606/com.blissbot.hallmarktest E/MoreInfoHPW_ViewGroup﹕ Parent view is not a TextView
01-29 22:20:00.106  12606-12606/com.blissbot.hallmarktest D/dalvikvm﹕ Trying to load lib /data/app-lib/com.blissbot.hallmarktest-114/libjmoodstocks-sdk.so 0x429498b8
01-29 22:20:00.106  12606-12606/com.blissbot.hallmarktest D/dalvikvm﹕ Added shared lib /data/app-lib/com.blissbot.hallmarktest-114/libjmoodstocks-sdk.so 0x429498b8
01-29 22:20:00.106  12606-12606/com.blissbot.hallmarktest D/dalvikvm﹕ No JNI_OnLoad found in /data/app-lib/com.blissbot.hallmarktest-114/libjmoodstocks-sdk.so 0x429498b8, skipping init
01-29 22:20:00.106  12606-12606/com.blissbot.hallmarktest D/dalvikvm﹕ Trying to load lib /data/app-lib/com.blissbot.hallmarktest-114/libjmoodstocks-sdk-core-armv7-neon.so 0x429498b8
01-29 22:20:00.106  12606-12606/com.blissbot.hallmarktest D/dalvikvm﹕ Added shared lib /data/app-lib/com.blissbot.hallmarktest-114/libjmoodstocks-sdk-core-armv7-neon.so 0x429498b8
01-29 22:20:00.106  12606-12606/com.blissbot.hallmarktest D/dalvikvm﹕ No JNI_OnLoad found in /data/app-lib/com.blissbot.hallmarktest-114/libjmoodstocks-sdk-core-armv7-neon.so 0x429498b8, skipping init
01-29 22:20:00.166  12606-12606/com.blissbot.hallmarktest D/Moodstocks SDK﹕ Sync will start.
01-29 22:20:00.376  12606-12606/com.blissbot.hallmarktest D/Moodstocks SDK﹕ Sync succeeded (7 images)
01-29 22:20:06.342  12606-12606/com.blissbot.hallmarktest D/AndroidRuntime﹕ Shutting down VM
01-29 22:20:06.342  12606-12606/com.blissbot.hallmarktest W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41708da0)
01-29 22:20:06.352  12606-12606/com.blissbot.hallmarktest E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.blissbot.hallmarktest, PID: 12606
    java.lang.IllegalStateException: Could not find a method onScanButtonClicked(View) in the activity class com.blissbot.hallmarktest.SenderActivity2 for onClick handler on view class android.widget.Button with id 'button'
            at android.view.View$1.onClick(View.java:3956)
            at android.view.View.performClick(View.java:4633)
            at android.view.View$PerformClick.run(View.java:19330)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:157)
            at android.app.ActivityThread.main(ActivityThread.java:5356)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NoSuchMethodException: onScanButtonClicked [class android.view.View]
            at java.lang.Class.getConstructorOrMethod(Class.java:472)
            at java.lang.Class.getMethod(Class.java:857)
            at android.view.View$1.onClick(View.java:3949)
            at android.view.View.performClick(View.java:4633)
            at android.view.View$PerformClick.run(View.java:19330)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:157)
            at android.app.ActivityThread.main(ActivityThread.java:5356)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
            at dalvik.system.NativeStart.main(Native Method)
01-29 22:20:08.074  13193-13193/com.blissbot.hallmarktest W/ApplicationPackageManager﹕ getCSCPackageItemText()
01-29 22:20:08.124  13193-13193/com.blissbot.hallmarktest E/MoreInfoHPW_ViewGroup﹕ Parent view is not a TextView
01-29 22:20:08.234  13193-13193/com.blissbot.hallmarktest I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:381>: EGL 1.4 QUALCOMM build:  (CL3869936)
    OpenGL ES Shader Compiler Version: 17.01.11.SPL
    Build Date: 01/17/14 Fri
    Local Branch:
    Remote Branch:
    Local Patches:
    Reconstruct Branch:
01-29 22:20:08.284  13193-13193/com.blissbot.hallmarktest D/OpenGLRenderer﹕ Enabling debug mode 0

SenderActivity2 代码..

public class SenderActivity2 extends Activity implements Scanner.SyncListener {

// Moodstocks API key/secret pair
private static final String API_KEY = "xxxxxxxxxxxxxxxxxx";
private static final String API_SECRET = "xxxxxxxxxxxxxxxxxx";

private boolean compatible = false;
private Scanner scanner;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_recipient);

    compatible = Scanner.isCompatible();
    if (compatible) {
        try {
            scanner = Scanner.get();
            String path = Scanner.pathFromFilesDir(this, "scanner.db");
            scanner.open(path, API_KEY, API_SECRET);
            scanner.setSyncListener(this);
            scanner.sync();
        } catch (MoodstocksError e) {
            e.printStackTrace();
        }
    }

}// On Create END

@Override
protected void onDestroy() {
    super.onDestroy();
    if (compatible) {
        try {
            scanner.close();
            scanner.destroy();
            scanner = null;
        } catch (MoodstocksError e) {
            e.printStackTrace();
        }
    }
}


public void onPicButtonClicked(View view) {
    if (compatible) {
        startActivity(new Intent(this, PicActivity.class));
    }
}

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SenderActivity2"
android:background="@drawable/hallmark_2">

<TextView
    android:focusable="false"
    android:selectable="false"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tapcrownTextPic"
    android:textSize="18sp"
    android:text="@string/touch_crown"
    android:background="@color/white"
    android:layout_marginTop="107dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<Button
    android:layout_width="150dp"
    android:layout_height="200dp"
    android:id="@+id/buttonPic"
    android:visibility="visible"
    android:background="@null"
    android:layout_below="@+id/tapcrownTextPic"
    android:layout_alignLeft="@+id/tapcrownTextPic"
    android:layout_alignStart="@+id/tapcrownTextPic"
    android:layout_marginTop="25dp"
    android:onClick="onPicButtonClicked" />

新信息

我注意到错误是指按钮。你可以在截图中看到我已经重命名了它,但它仍然认为它的“按钮” enter image description here Activity_Sender_2  Design and Text views showing "button" "buttonPic" and onClick handler

buttonPic Design View

enter image description here

最佳答案

只需添加 公共(public)无效 onScanButtonClicked( View ) { } SenderActivity2 类中的方法。

您必须添加此方法,因为您在各自的 xml 中定义了 onScanButtonClicked。

关于android - 编译器看不到新方法名称 - 构建问题但运行时错误。 "java.lang.IllegalStateException: Could not find a method",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28229745/

相关文章:

c# - 如何避免在递归算法中达到线程池的最大值?

android - Andengine如何制作粒子效果?

java - 调试时无法实例化 Activity 问题

java - 在Java中打印矩阵行

python - Bottle 框架和 OOP,使用方法而不是函数

c# - Swagger.net 是否可以与高于 4.0 的 .Net 框架配合使用

android - 如何让偏好更花哨?

android - 如何舍入长数字并将其显示为android中的字符串?

ios - 切换 View 后, View 中仍然调用方法吗?

windows - 如何使用 MsgBox 在 VBS 中使用用户输入正确配置条件操作?