简体   繁体   English

java.lang.IllegalStateException:当我运行应用程序时无法执行 android:onClick 的方法

[英]java.lang.IllegalStateException: Could not execute method for android:onClick when I run app

I get this error when I run the app运行应用程序时出现此错误

java.lang.IllegalStateException: Could not execute method for android:onClick java.lang.IllegalStateException:无法执行 android 的方法:onClick

the line of logcat error 56 is: logcat 错误 56 的行是:

  tinyYolo = readNetFromDarknet(tinyYoloCfg, tinyYoloWeights);

This is my code这是我的代码

public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 {公共 class MainActivity 扩展 AppCompatActivity 实现 CameraBridgeViewBase.CvCameraViewListener2 {

CameraBridgeViewBase cameraBridgeViewBase;
BaseLoaderCallback baseLoaderCallback;
boolean startYolo = false;
boolean firstTimeYolo = false;
Net tinyYolo;


public void YOLO(View yolo){

    if (startYolo == false){
        startYolo = true;

        if (firstTimeYolo == false){


            firstTimeYolo = true;
            String tinyYoloCfg = getExternalCacheDir() + "/dnns/yolov3-tiny.cfg" ;
            String tinyYoloWeights = getExternalCacheDir() + "/dnns/yolov3-tiny.weights";

            tinyYolo = readNetFromDarknet(tinyYoloCfg, tinyYoloWeights);
        }
    }

    else{

        startYolo = false;
    }
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    cameraBridgeViewBase = (JavaCameraView)findViewById(R.id.CameraView);
    cameraBridgeViewBase.setVisibility(SurfaceView.VISIBLE);
    cameraBridgeViewBase.setCvCameraViewListener(this);


    //System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    baseLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            super.onManagerConnected(status);

            switch(status){

                case BaseLoaderCallback.SUCCESS:
                    cameraBridgeViewBase.enableView();
                    break;
                default:
                    super.onManagerConnected(status);
                    break;
            }
        }

    };
}

@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {

    Mat frame = inputFrame.rgba();

    if (startYolo == true) {

        Imgproc.cvtColor(frame, frame, Imgproc.COLOR_RGBA2RGB);



        Mat imageBlob = Dnn.blobFromImage(frame, 0.00392, new Size(416,416),new Scalar(0, 0, 0),/*swapRB*/false, /*crop*/false);


        tinyYolo.setInput(imageBlob);



        java.util.List<Mat> result = new java.util.ArrayList<Mat>(2);

        List<String> outBlobNames = new java.util.ArrayList<>();
        outBlobNames.add(0, "yolo_16");
        outBlobNames.add(1, "yolo_23");

        tinyYolo.forward(result,outBlobNames);


        float confThreshold = 0.3f;



        List<Integer> clsIds = new ArrayList<>();
        List<Float> confs = new ArrayList<>();
        List<Rect> rects = new ArrayList<>();




        for (int i = 0; i < result.size(); ++i)
        {

            Mat level = result.get(i);

            for (int j = 0; j < level.rows(); ++j)
            {
                Mat row = level.row(j);
                Mat scores = row.colRange(5, level.cols());

                Core.MinMaxLocResult mm = Core.minMaxLoc(scores);




                float confidence = (float)mm.maxVal;


                Point classIdPoint = mm.maxLoc;



                if (confidence > confThreshold)
                {
                    int centerX = (int)(row.get(0,0)[0] * frame.cols());
                    int centerY = (int)(row.get(0,1)[0] * frame.rows());
                    int width   = (int)(row.get(0,2)[0] * frame.cols());
                    int height  = (int)(row.get(0,3)[0] * frame.rows());


                    int left    = centerX - width  / 2;
                    int top     = centerY - height / 2;

                    clsIds.add((int)classIdPoint.x);
                    confs.add((float)confidence);




                    rects.add(new Rect(left, top, width, height));
                }
            }
        }
        int ArrayLength = confs.size();

        if (ArrayLength>=1) {
            // Apply non-maximum suppression procedure.
            float nmsThresh = 0.2f;

            MatOfFloat confidences = new MatOfFloat(Converters.vector_float_to_Mat(confs));


            Rect[] boxesArray = rects.toArray(new Rect[0]);

            MatOfRect boxes = new MatOfRect(boxesArray);

            MatOfInt indices = new MatOfInt();



            Dnn.NMSBoxes(boxes, confidences, confThreshold, nmsThresh, indices);


            // Draw result boxes:
            int[] ind = indices.toArray();
            for (int i = 0; i < ind.length; ++i) {

                int idx = ind[i];
                Rect box = boxesArray[idx];

                int idGuy = clsIds.get(idx);

                float conf = confs.get(idx);

                List<String> cocoNames = Arrays.asList("a person", "a bicycle", "a motorbike", "an airplane", "a bus", "a train", "a truck", "a boat", "a traffic light", "a fire hydrant", "a stop sign", "a parking meter", "a car", "a bench", "a bird", "a cat", "a dog", "a horse", "a sheep", "a cow", "an elephant", "a bear", "a zebra", "a giraffe", "a backpack", "an umbrella", "a handbag", "a tie", "a suitcase", "a frisbee", "skis", "a snowboard", "a sports ball", "a kite", "a baseball bat", "a baseball glove", "a skateboard", "a surfboard", "a tennis racket", "a bottle", "a wine glass", "a cup", "a fork", "a knife", "a spoon", "a bowl", "a banana", "an apple", "a sandwich", "an orange", "broccoli", "a carrot", "a hot dog", "a pizza", "a doughnut", "a cake", "a chair", "a sofa", "a potted plant", "a bed", "a dining table", "a toilet", "a TV monitor", "a laptop", "a computer mouse", "a remote control", "a keyboard", "a cell phone", "a microwave", "an oven", "a toaster", "a sink", "a refrigerator", "a book", "a clock", "a vase", "a pair of scissors", "a teddy bear", "a hair drier", "a toothbrush");

                int intConf = (int) (conf * 100);

                Imgproc.putText(frame,cocoNames.get(idGuy) + " " + intConf + "%",box.tl(),Core.FONT_HERSHEY_SIMPLEX, 2, new Scalar(255,255,0),2);

                Imgproc.rectangle(frame, box.tl(), box.br(), new Scalar(255, 0, 0), 2);
            }
        }
    }
    return frame;
}
@Override
public void onCameraViewStarted(int width, int height) {


    if (startYolo == true){

        String tinyYoloCfg = getExternalCacheDir() + "/dnns/yolov3-tiny.cfg" ;
        String tinyYoloWeights = getExternalCacheDir() + "/dnns/yolov3-tiny.weights";

        tinyYolo = readNetFromDarknet(tinyYoloCfg, tinyYoloWeights);
    }
}

This is the logcat error message that I see:这是我看到的 logcat 错误消息:

java.lang.IllegalStateException: Could not execute method for android:onClick at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390) at android.view.View.performClick(View.java:4278) at android.view.View$PerformClick.run(View.java:17429) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5099) at Z93F725A07423FE1C889F448B33D21F4 java.lang.IllegalStateException: Could not execute method for android:onClick at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390) at android.view.View.performClick(View.java:4278) at android .view.View$PerformClick.run(View.java:17429) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os. Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5099) at Z93F725A07423FE1C889F448B33D21F4 6Z.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) at android.vi 6Z.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803 ) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method .invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) at android.vi ew.View.performClick(View.java:4278) at android.view.View$PerformClick.run(View.java:17429) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5099) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803) a ew.View.performClick(View.java:4278) at android.view.View$PerformClick.run(View.java:17429) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler .dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5099) at java.lang.reflect.Method.invokeNative( Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803) a t com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570) at dalvik.system.NativeStart.main(Native Method) Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(3.4.5) /build/3_4_pack-android/opencv/modules/dnn/src/darknet/darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: null/dnns/yolov3-tiny.cfg in function 'cv::dnn::experimental_dnn_34_v11::Net cv::dnn::experimental_dnn_34_v11::readNetFromDarknet(const cv::String&, const cv::String&)' ] at org.opencv.dnn.Dnn.readNetFromDarknet_0(Native Method) at org.opencv.dnn.Dnn.readNetFromDarknet(Dnn.java:322) at com.example.project_1.MainActivity.YOLO(MainActivity.java:56)... 14 more t com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570) at dalvik.system.NativeStart.main(Native Method) Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV (3.4.5)/build/3_4_pack-android/opencv/modules/dnn/src/darknet/darknet_importer.cpp:207:错误:(-212:解析错误)无法解析NetParameter文件:null/dnns/yolov3-tiny .cfg in function 'cv::dnn::experimental_dnn_34_v11::Net cv::dnn::experimental_dnn_34_v11::readNetFromDarknet(const cv::String&, const cv::String&)' ] at org.opencv.dnn.Dnn.readNetFromDarknet_0 (Native Method) at org.opencv.dnn.Dnn.readNetFromDarknet(Dnn.java:322) at com.example.project_1.MainActivity.YOLO(MainActivity.java:56)... 14 more

looks like your yolov3-tiny.cfg file is smehow malformed.看起来您的yolov3-tiny.cfg文件格式错误。 in your exception you can find Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(3.4.5) /build/3_4_pack-android/opencv/modules/dnn/src/darknet/darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: null/dnns/yolov3-tiny.cfg在您的异常中,您可以找到Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(3.4.5) /build/3_4_pack-android/opencv/modules/dnn/src/darknet/darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: null/dnns/yolov3-tiny.cfg

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.IllegalStateException:无法为 android 执行方法:onClick / ZE84E30B9390CDB67ZDDB6 - java.lang.IllegalStateException: Could not execute method for android:onClick / Android java.lang.IllegalStateException:无法执行android:onClick的方法 - java.lang.IllegalStateException: Could not execute method for android:onClick in android 错误:java.lang.IllegalStateException:无法执行android:onClick的方法 - Error: java.lang.IllegalStateException: Could not execute method for android:onClick Kotlin-java.lang.IllegalStateException:无法执行android:onClick的方法 - Kotlin - java.lang.IllegalStateException: Could not execute method for android:onClick 单击按钮后应用程序崩溃 - java.lang.IllegalStateException:无法执行 android 的方法:onClick - App crashing after clicking Button- java.lang.IllegalStateException: Could not execute method for android:onClick java.lang.IllegalStateException:尝试单击按钮时无法执行android:onClick的方法 - java.lang.IllegalStateException: Could not execute method for android:onClick when trying to click a button Android-Java:java.lang.IllegalStateException:无法执行 android 的方法:onClick - Android-Java: java.lang.IllegalStateException: Could not execute method for android:onClick Android Studio 问题; java.lang.IllegalStateException: 无法执行 android:onClick 的方法 - Android Studio problem ; java.lang.IllegalStateException: Could not execute method for android:onClick Android Studio Application - java.lang.IllegalStateException: Could not execute method for android:onClick - Not a Null Pointer Exception - Android Studio Application - java.lang.IllegalStateException: Could not execute method for android:onClick - Not a Null Pointer Exception Android Studio 3.1.3 中的错误。 java.lang.IllegalStateException: 无法执行 android:onClick 的方法 - Error in Android Studio 3.1.3. java.lang.IllegalStateException: Could not execute method for android:onClick
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM