Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Gson时应用程序崩溃HTC Explorer A310e_Android_Gson - Fatal编程技术网

Android 使用Gson时应用程序崩溃HTC Explorer A310e

Android 使用Gson时应用程序崩溃HTC Explorer A310e,android,gson,Android,Gson,我在使用HTC Explorer A310e时遇到了这个错误,但它在其他设备上运行良好。真正的问题是什么 03-25 12:23:37.553: ERROR/EmbeddedLogger(178): App crashed! Process: com.consors.android.de 03-25 12:23:37.553: ERROR/EmbeddedLogger(178): App crashed! Package: com.consors.android.de v4 (1.0.3.9)

我在使用HTC Explorer A310e时遇到了这个错误,但它在其他设备上运行良好。真正的问题是什么

03-25 12:23:37.553: ERROR/EmbeddedLogger(178): App crashed! Process: com.consors.android.de
03-25 12:23:37.553: ERROR/EmbeddedLogger(178): App crashed! Package: com.consors.android.de v4 (1.0.3.9)
03-25 12:23:37.553: ERROR/EmbeddedLogger(178): Error getting package label: com.consors.android.de
        java.lang.NullPointerException
        at com.htc.server.embedded.EmbeddedLogger.onHandleApplicationCrash(EmbeddedLogger.java:59)
        at com.android.server.am.ActivityManagerService.handleApplicationCrash(ActivityManagerService.java:7739)
        at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:1033)
        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1657)
        at android.os.Binder.execTransact(Binder.java:320)
        at dalvik.system.NativeStart.run(Native Method)
03-25 12:23:37.553: ERROR/EmbeddedLogger(178): Application Label: <ERROR>
03-25 12:23:37.553: ERROR/AndroidRuntime(538): FATAL EXCEPTION: main
        java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.registerTypeAdapterFactory
        at com.consors.android.auxilary.GsonRequestResponseHandler.getInstance(GsonRequestResponseHandler.java:26)
        at com.consors.android.ui.watchlist.WebWatchList.subscribeWatchListsUrlRequest(WebWatchList.java:293)
        at com.consors.android.ui.AbsSnapShotActivity.sendWatchListRequest(AbsSnapShotActivity.java:2105)
        at com.consors.android.ui.AbsSnapShotActivity.onActivityResult(AbsSnapShotActivity.java:422)
        at com.consors.android.de.ui.SnapShotActivity.onActivityResult(SnapShotActivity.java:198)
        at android.app.Activity.dispatchActivityResult(Activity.java:4108)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:3016)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:3072)
        at android.app.ActivityThread.access$2000(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1084)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:150)
        at android.app.ActivityThread.main(ActivityThread.java:4389)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
        at dalvik.system.NativeStart.main(Native Method)
自定义类型适配器定义:

public class ArrayAdapterFactory implements TypeAdapterFactory {

@SuppressWarnings({ "unchecked", "rawtypes" })

public <T> TypeAdapter<T> create(final Gson gson, final TypeToken<T> type) { 
  TypeAdapter<T> typeAdapter = null;
  try {
      if (type.getRawType() == ArrayList.class)
      {  
          typeAdapter = new ArrayAdapter(
                  (Class) ((ParameterizedType) type.getType())
                          .getActualTypeArguments()[0]);
      }
  } catch (Exception e) {
      e.printStackTrace();
  }

  return typeAdapter;
 }
}
公共类ArrayAdapterFactory实现TypeAdapterFactory{
@SuppressWarnings({“unchecked”,“rawtypes”})
公共类型适配器创建(最终Gson Gson,最终TypeToken类型){
TypeAdapter-TypeAdapter=null;
试一试{
if(type.getRawType()==ArrayList.class)
{  
typeAdapter=新阵列适配器(
(类)((ParameteredType)type.getType()
.getActualTypeArguments()[0]);
}
}捕获(例外e){
e、 printStackTrace();
}
返回类型适配器;
}
}

即使这个问题已经提出7个月了,这可能仍然会帮助其他人解决同样的问题

一些HTC手机的系统类路径中有一个过时的Gson版本。因此,应用程序中包含的Gson JAR(较新)版本将被忽略

我知道两种可能的解决方案,但都不是特别方便:
1) 使用Gson的旧版本。这可能是个坏主意,因为您可能需要更新版本中的一些新功能和错误修复。此外,未来的HTC手机可能会附带不同的Gson版本,因此这种方法不是很稳健。

2) 重新打包应用程序中包含的Gson版本,如

中所述。是否可以发布一些代码?可能相关的行:com.consors.android.auxiliary.GsonRequestResponseHandler.getInstance(GsonRequestResponseHandler.java:26)请查找我粘贴在上面的代码的相关部分。在我看来,您在该手机上部署了一个旧版本的Gson(<2.1)。在2.1中,registerTypeAdapterFactory被添加到生成器中。但只是一个猜测。
public class ArrayAdapterFactory implements TypeAdapterFactory {

@SuppressWarnings({ "unchecked", "rawtypes" })

public <T> TypeAdapter<T> create(final Gson gson, final TypeToken<T> type) { 
  TypeAdapter<T> typeAdapter = null;
  try {
      if (type.getRawType() == ArrayList.class)
      {  
          typeAdapter = new ArrayAdapter(
                  (Class) ((ParameterizedType) type.getType())
                          .getActualTypeArguments()[0]);
      }
  } catch (Exception e) {
      e.printStackTrace();
  }

  return typeAdapter;
 }
}