Google Plus Android SDK:错误导致类com.google.android.gms.plus.PlusOneButton

Reg*_*_AG 8 eclipse android google-plus-one google-plus google-play-services

我在Android应用中使用Google Plus SDK.在一些罕见的设备上,当我的包含Google Plus按钮的视图膨胀时,我遇到了以下崩溃:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); // CRASH HERE

....
}
Run Code Online (Sandbox Code Playgroud)

我的GooglePlus按钮是xml,如下所示:

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


<com.google.android.gms.plus.PlusOneButton
  xmlns:plus="http://schemas.android.com/apk/lib/com.google.android.gms.plus"
  android:id="@+id/plus_one_button"
  ...
   />
Run Code Online (Sandbox Code Playgroud)

在日志下面.在解决这个问题的方法上有什么想法吗?

谢谢 !!

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.audioguidia.myweather/com.audioguidia.myweather.MyWeatherActivity}: android.view.InflateException: Binary XML file line #111: Error inflating class com.google.android.gms.plus.PlusOneButton
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
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:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #111: Error inflating class com.google.android.gms.plus.PlusOneButton
at android.view.LayoutInflater.createView(LayoutInflater.java:613)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
at android.app.Activity.setContentView(Activity.java:1867)
at com.audioguidia.myweather.MyWeatherActivity.onCreate(MyWeatherActivity.java:419)
at android.app.Activity.performCreate(Activity.java:5008)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
... 11 more
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:587)
... 22 more
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
at android.content.res.Resources.getValue(Resources.java:1013)
at android.content.res.Resources.getDrawable(Resources.java:658)
at com.google.android.gms.plus.PlusOneDummyView$b.getDrawable(Unknown Source)
at com.google.android.gms.plus.PlusOneDummyView.<init>(Unknown Source)
at com.google.android.gms.internal.bu.a(Unknown Source)
at com.google.android.gms.plus.PlusOneButton.d(Unknown Source)
at com.google.android.gms.plus.PlusOneButton.<init>(Unknown Source)
... 25 more
Run Code Online (Sandbox Code Playgroud)

我遇到问题的设备示例(它只发生在每种类型的少数设备上,否则我会有更多的崩溃报告):

  • 起重机a702jhorange
  • MW0712
  • 平板电脑S(nbx03)
  • 项目清单
  • Galaxy Y(GT-S5360B)
  • Galaxy Y Duos(GT-S6102)
  • rk2928sdk
  • rk2928sdk
  • rk2928sdk
  • Galaxy Note II(t03g)
  • Galaxy Mini(GT-S5570I)
  • e1901_v77_jdt1_9p017_fwvga
  • Nexus S(crespo)
  • Galaxy Ace(GT-S5830i)
  • 起重机INET
  • ITP-R208W(rk30sdk)

Kai*_*Kai 0

我收到了来自 rk2928sdk 的 ACRA 报告,但有同样的异常。GooglePlayServicesUtil.isGooglePlayServicesAvailable(this)幸运的是,我存储了报告中的信息。此电话已返回SERVICE_INVALID

\n\n

PlusOneButton在一个非常基本的“关于”活动中使用 ,因此我决定复制此活动并PlusOneButton从布局中删除 。现在我\xc2\xb4m抓住了InflateException并使用不带按钮的布局。

\n\n
@Override\npublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {\n    View rootView;\n    try {\n        rootView = inflater.inflate(R.layout.activity_about, container, false);\n    } catch (InflateException e) {\n        rootView = inflater.inflate(R.layout.activity_about_fallback, container, false);\n    }\n    return rootView;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

可以try-catch用检查是否.isGooglePlayServicesAvailable()返回正常值来代替。但我不知道哪些返回值保证了可用性,PlusOneButton所以我将把它留给丑陋的try-catch.

\n