java - 无法实例化 com.google.android.gms.common.SignInButton

标签 java android xml eclipse google-play-services

首先,我很抱歉问这个问题,因为几个月和几年前其他人就已经问过这个问题。但是我找不到解决这个问题的方法。

我按照 Google Play 服务教程将 G+ 登录按钮包含在我的一个使用 Google Play 服务的应用程序的 XML 布局之一中。这意味着将以下内容添加到我的布局中:

        <com.google.android.gms.common.SignInButton
            android:id="@+id/sign_in_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

但是我无法这样做,因为 eclipse 总是告诉我:

The following classes could not be instantiated: - com.google.android.gms.common.SignInButton

异常堆栈跟踪如下所示:

java.lang.VerifyError: Expecting a stackmap frame at branch target 15
Exception Details:
  Location:
    com/google/android/gms/common/SignInButton.z(Landroid/content/Context;)V @4: ifnull
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0000000: 2ab4 0016 c600 0b2a 2ab4 0016 b600 252a
    0000010: 2b2a b400 182a b400 15b8 0029 b500 16a7
    0000020: 001c 4d12 0512 04b8 001a 572a 2b2a b400
    0000030: 182a b400 15b8 0021 b500 162a 2ab4 0016
    0000040: b600 222a b400 162a b600 24b6 001b 2ab4
    0000050: 0016 2ab6 001c b1                      
  Exception Handler Table:
    bci [15, 31] => handler: 34

    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.getConstructor(Unknown Source)
    at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:367)
    at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:194)
    at com.android.layoutlib.bridge.android.BridgeInflater.loadCustomView(BridgeInflater.java:205)
    at com.android.layoutlib.bridge.android.BridgeInflater.createViewFromTag(BridgeInflater.java:133)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:296)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:279)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:318)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:332)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:517)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1584)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1309)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:1066)
    at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegatePageChange(LayoutEditorDelegate.java:686)
    at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.pageChange(CommonXmlEditor.java:360)
    at org.eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.java:294)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1085)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1070)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:782)
    at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3110)
    at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1794)
    at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:283)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:236)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1438)

我尝试了所有能找到的解决方案,但没有任何效果。

目前,我只是以编程方式添加“登录”按钮,它的工作原理正如您所期望的那样。但我不知道为什么我不能简单地通过 XML 添加按钮。 Google Play 服务当前被设置为一个库,我的项目正在将其用作一个库。

堆栈跟踪的开头内容为:

Exception Details:
      Location:
        com/google/android/gms/common/SignInButton.z(Landroid/content/Context;)V @4: ifnull

当我尝试通过 XML 添加按钮时,我认为该按钮无法找到和/或获取应用程序上下文,并且这可能是这里的错误,我是否可以正确解释这一点?在这种情况下,将 Google Play Services 库与我的项目合并应该可以解决这个问题,不是吗?但这会使项目不必要地膨胀。还有其他选择吗?

最佳答案

仅清理项目并关闭 Eclipse。然后您应该重新打开 Elipse,按钮应该可以工作

关于java - 无法实例化 com.google.android.gms.common.SignInButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26946284/

相关文章:

Android 日志,什么是冗长?

xml - 缺少节点的 xpath

c# - 将 TextReader 转换为 XmlReader

java - 使用 apache poi 时将 excel 单元格大小与内容大小相匹配的问题

java - 没有错误!找不到java.lang.StackOverflowError的解决方案

java - Firebase Android : Getting data stored in user Id then to the random Push(). getKey() 值

android - 将屏幕方向固定为纵向

javascript - 如何在没有任何基于触摸的屏幕/设备的情况下测试基于 JavaScript 的触摸事件?

xml - 需要 XSL 文件将内部 xml 测试格式转换为 Junit 格式(jenkins 的 xUnit 插件)

java - Mahout 中 DataModel 与 FileItemSimilarity 的使用