按钮单击强制关闭应用程序

Button click force closes the app

我是 Android 开发的新手。我想这是个新问题。 问:我插入了 2 个按钮来打开 2 个链接,在 Android Studio 中没有发现代码错误,但应用程序在单击按钮时强制关闭。有什么想法吗?

package com.domain.app;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;

public class LinkButtons extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void goToBlue (View view) {
        goToUrl ( "http://www.google.com");
    }

    public void goToRed (View view) {
        goToUrl ( "http://www.facebook.com");
    }

    private void goToUrl (String url) {
        Uri uriUrl = Uri.parse(url);
        Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
        startActivity(launchBrowser);
    }

}

08-25 01:31:12.598  16635-16635/com.domain.app D/AndroidRuntime﹕ Shutting down VM
08-25 01:31:12.600  16635-16635/com.domain.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.domain.app, PID: 16635
    java.lang.IllegalStateException: Could not find a method goToRed(View) in the activity class com.domain.app.MainActivity for onClick handler on view class android.support.v7.widget.AppCompatButton with id 'button_Red'
            at android.view.View.onClick(View.java:4007)
            at android.view.View.performClick(View.java:4780)
            at android.view.View$PerformClick.run(View.java:19866)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.NoSuchMethodException: goToRed [class android.view.View]
            at java.lang.Class.getMethod(Class.java:664)
            at java.lang.Class.getMethod(Class.java:643)
            at android.view.View.onClick(View.java:4000)
            at android.view.View.performClick(View.java:4780)
            at android.view.View$PerformClick.run(View.java:19866)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

       <Button
            android:layout_width="106dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_marginLeft="30dp"
            android:text="RED"
            android:background="@drawable/button_red"
            android:layout_gravity="left|bottom"
            android:autoLink="web"
            android:clickable="true"
            android:id="@+id/button_Red"
            android:onClick="goToRed"
            android:textColor="#ffffffff"
            android:textSize="15dp" />


        <Button
            android:layout_width="106dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_marginRight="30dp"
            android:background="@drawable/button_blue"
            android:layout_gravity="right|bottom"
            android:text="BLUE"
            android:autoLink="web"
            android:clickable="true"
            android:id="@+id/button_Blue"
            android:onClick="goToBlue"
            android:textColor="#ffffffff"
            android:textSize="15dp" />

从 LogCat 开始,您在 MainActivity.java 中使用此 xml,而您的 goToRed() 方法在 LinkButtons.java 中...这就是为什么他找不到方法。

即使你那样修复它,.如上所述,在某些设备或模拟器上它不会工作,最好使用 findViewById(R.id.....) .setOnClickListener(。 .....