谷歌按钮“无法转换为android.widget.Button”
我正试图按照Google的指示在以下位置导入Google Play游戏服务: 这是整个错误日志:谷歌按钮“无法转换为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
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新建OnCLickListenersignInButton无法分配给按钮 您可以这样使用: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