谷歌按钮“无法转换为android.widget.Button”

谷歌按钮“无法转换为android.widget.Button”,android,widget,google-play-services,Android,Widget,Google Play Services,我正试图按照Google的指示在以下位置导入Google Play游戏服务: 这是整个错误日志: 08-15 19:57:25.961 472-472/flash4life.gespant2015.com.flashreflex20 E/AndroidRuntime: FATAL EXCEPTION: main Process: f

我正试图按照Google的指示在以下位置导入Google Play游戏服务:

这是整个错误日志:

08-15 19:57:25.961 472-472/flash4life.gespant2015.com.flashreflex20 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                  Process: flash4life.gespant2015.com.flashreflex20, PID: 472
                                                                                  java.lang.RuntimeException: Unable to start activity ComponentInfo{flash4life.gespant2015.com.flashreflex20/flash4life.gespant2015.com.flashreflex20.MainActivity}: java.lang.ClassCastException: com.google.android.gms.common.SignInButton cannot be cast to android.widget.Button
                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3255)
                                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3351)
                                                                                      at android.app.ActivityThread.access$1100(ActivityThread.java:222)
                                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1796)
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                      at android.os.Looper.loop(Looper.java:158)
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:7230)
                                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
                                                                                   Caused by: java.lang.ClassCastException: com.google.android.gms.common.SignInButton cannot be cast to android.widget.Button
                                                                                      at flash4life.gespant2015.com.flashreflex20.MainActivity.onCreate(MainActivity.java:107)
                                                                                      at android.app.Activity.performCreate(Activity.java:6877)
                                                                                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3208)
                                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3351) 
                                                                                      at android.app.ActivityThread.access$1100(ActivityThread.java:222) 
                                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1796) 
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                      at android.os.Looper.loop(Looper.java:158) 
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:7230) 
                                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
我在Java中指定了按钮:

signInButton = (Button) findViewById(R.id.sign-in-button);

虽然它包含单词按钮,但根据,SignInButton实际上扩展了FrameLayout

每个视图都支持设置OnClickListener,因此根本没有理由将其强制转换为Button。

无法将SignInButton分配给Button

您可以这样使用它:

SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button);
如果需要,您可以参考:

这是SignInButton文档,它是一个框架布局,没有按钮 公共最终类SignInButton扩展FrameLayout实现View.OnClickListener

但是它有你可以使用的功能 void setOnClickListenerView.OnClickListener侦听器

所以你可以这样做 signInButton=signInButton findViewByIdR.id.sign-in-button; signInButton.SetOnClickListener新建OnCLickListener

signInButton无法分配给按钮

您可以这样使用:Kotlin

        var signin = findViewById<View>(R.id.sign_in_button) as SignInButton

谢谢,这对我很有效,节省了很多时间。
SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button);
        var signin = findViewById<View>(R.id.sign_in_button) as SignInButton