我在Android应用程序中实现Json反序列化时遇到一些问题(使用Gson库)
我上过这样的课
public class MyJson<T>{
public List<T> posts;
}
Run Code Online (Sandbox Code Playgroud)
反序列化调用是:
public class JsonDownloader<T> extends AsyncTask<Void, Void, MyJson<T>> {
...
protected MyJson<T> doInBackground(Void... params) {
...
Reader reader = new InputStreamReader(content);
GsonBuilder gson = new GsonBuilder();
Type collectionType = new TypeToken<MyJson<T>>() {}.getType();
result = gson.create().fromJson(reader, collectionType);
...
}
}
Run Code Online (Sandbox Code Playgroud)
问题是调用后的result.posts列表包含一个LinkedTreeMap对象数组(具有正确的值,因此问题是反序列化)而不是MyJson对象.当我使用MyObject而不是T时,一切正常,MyObject正确.
那么有没有办法在不创建自定义反序列化器的情况下实现反序列化调用?
我无法让 Firebase 崩溃报告将日志发送到 firebase(在 firebase 控制台中看不到任何崩溃)
我发现以前我在 Fabric Crashlytics 中创建了项目并今天将其删除
据我所知,我已经正确配置了我的 android 项目。所以也许我只是在 firebase 控制台中遗漏了一些东西。代码编译成功Fabric.isInitialized() == true
项目 -> build.gradle
classpath 'com.google.gms:google-services:4.2.0'
classpath 'io.fabric.tools:gradle:1.28.1'
Run Code Online (Sandbox Code Playgroud)
应用程序-> build.gradle
implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
没有<meta-data>在清单并没有Fabric.with在Application。如此清晰的配置。然而,项目本身非常庞大。
使用Crashlytics.getInstance().crash()此调用崩溃后,使用控制台在控制台中输出adb logcat -s Fabric CrashlyticsCore
I CrashlyticsCore: Initializing Crashlytics 2.6.8.32
E Fabric : Failed to retrieve settings from https://settings.crashlytics.com/spi/v2/platforms/android/apps/*******/settings
W CrashlyticsCore: Received null settings, skipping report submission!
Run Code Online (Sandbox Code Playgroud)
所以主要问题可能是我没有收到设置并且不知道这意味着什么
我正在尝试将Google云端硬盘应用到我的Android应用中,我甚至无法连接到Api客户端.我不知道为什么:
onConnectionFailed()我正在调用connectionResult.startResolutionForResult()ifconnectionResult.hasResolution()onActivityResult匹配requestCode我收到resultCode == 0(RESULT_CANCELLED),即使我选择我的帐户你知道为什么吗?我还尝试添加:
<meta-data
android:name="com.google.android.apps.drive.APP_ID"
android:value="----"/>
Run Code Online (Sandbox Code Playgroud)
在文档页面上没有提到但在某些SO帖子上没有提到的Manifest.
感谢帮助
编辑:
我也试过用 enableAutoManage
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.build();
Run Code Online (Sandbox Code Playgroud)
而不是manualy配置连接和connectionFailed回调:
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
Run Code Online (Sandbox Code Playgroud)
它在onConnectionFailed方法中返回错误代码13 .基于文档似乎,这在以下情况下返回:
当用户选择不完成提供的解析时,OnConnectionFailedListener传递给enableAutoManage(FragmentActivity,GoogleApiClient.OnConnectionFailedListener).例如,通过取消对话框.
但我没有取消它.
我在Nexus 5x上测试它 - Android N.
所以昨天我终于找到了一些时间来尝试新的DataBinding库.我曾尝试将它与CursorAdapter一起使用,但没有成功.
正如Androidguys在其页面上所写:
如果您在ListView或RecyclerView适配器中使用数据绑定项,您可能更喜欢使用:
Run Code Online (Sandbox Code Playgroud)ListItemBinding binding = ListItemBinding.inflate(layoutInflater, viewGroup, false); //or ListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false);
但是在CursorAdapter中我必须将Inflating和Binding分成两种方法.那么如何正确实现呢?大多数情况下我得到一个异常:视图标签在视图上不正确:null
private class BookCursorAdapter extends CursorAdapter {
public BookCursorAdapter(Context context) {
super(context, null, 0);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
BookListItemBinding binding = DataBindingUtil.inflate(getLayoutInflater(), R.layout.book_list_item, parent, false);
return binding.getRoot();
// or just
// return getLayoutInflater().inflate(R.layout.book_list_item, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
// here it fails (and i cannot see source code …Run Code Online (Sandbox Code Playgroud) 我只是在我的项目中使用 Kotlin,遇到了奇怪的问题...当尝试转换自定义EditTextAndroid studio 时停止响应。当我尝试将其部分转换时,它在转换这段代码时停止响应:
private TextWatcher editor = new TextWatcher() {
long newMicro = 0;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
s = s.toString().replace(".", "")
.replace(",", "")
.replace("$", "");
try {
newMicro = Long.parseLong(s.toString());
} catch (Exception e) {
newMicro = 0;
}
}
@Override
public void afterTextChanged(Editable editable) {
removeTextChangedListener(editor);
setMicroUnits(newMicro);
addTextChangedListener(editor);
}
};
Run Code Online (Sandbox Code Playgroud)
你有过这样的行为经历吗?我无法TextWatcher在 Kotlin …
最近我发布了一个已发布的混淆的Android应用程序,启用了firebase崩溃报告.应用程序崩溃,因为我没有上传映射文件,我无法正确读取堆栈跟踪.
所以我想下载堆栈跟踪并手动反混淆它 /retrace.sh -verbose mapping.txt ~/trace.txt
但是我无法获得堆栈跟踪的原始形式......
所以我有两个问题:
我目前正在尝试使用 Firebase 动态链接(深层链接)。应用程序的核心应在社交媒体上共享链接。
我已成功创建短链接(200 OK),并将链接共享到 G+ 和 Facebook。但有一个问题
我正在使用 Android 开发人员网站上建议的 http 方案:
<activity android:name=".LinkActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="..."/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
那么如何正确使用 Firebase 动态链接与 Facebook 应用程序呢?
我刚刚dagger.android按照文档实现了.写在那里的第一个不正确的东西HasActivityInjector是容易被替换的存在HasDispatchingActivityInjector.
另外提到的是@ContributesAndroidInjector注释的使用应该简化源代码创建...但是我找不到这样的注释既不通过Android工作室自动完成也不能在他们的JavaDoc和文档中的链接重定向到404网站.我该如何使用注释?或者我可以吗?
编辑:我正在使用
compile "com.google.dagger:dagger:$rootProject.daggerVersion"
compile "com.google.dagger:dagger-android:$rootProject.daggerVersion"
annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.daggerVersion"
annotationProcessor "com.google.dagger:dagger-android-processor:$rootProject.daggerVersion"
Run Code Online (Sandbox Code Playgroud)
哪里 daggerVersion = '2.10'
我还是完全不明白内存泄漏.我用static方法创建了自定义单例:
public static AnalyticsHelper getInstance(Context context) {
return analyticsHelper == null ?
analyticsHelper = new AnalyticsHelper(FirebaseAnalytics.getInstance(context)) :
analyticsHelper;
}
Run Code Online (Sandbox Code Playgroud)
我想知道如果我实例化它是否会发生内存(活动)泄漏Activity.我不确定,因为其他Firebase工具在实例化时起作用ContentProvider和不需要Context.官方文件对我没有帮助.
android ×9
firebase ×4
crashlytics ×1
dagger-2 ×1
data-binding ×1
drive ×1
facebook ×1
gson ×1
java ×1
json ×1
kotlin ×1
listview ×1
memory-leaks ×1