我发布了一个内置Crashlytics的应用程序来发送崩溃报告,这是我收到的报告:
"致命异常:java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知。 确保不从后台线程修改适配器的内容,而只是从UI线程修改。确保适配器在其内容更改时调用notifyDataSetChanged()。 [在ListView(2131493375,类android.widget.ListView)中使用Adapter(类com.nhatnq.app.b.cr)] 在android.widget.ListView.layoutChildren(ListView.java) 在android.widget.AbsListView.onLayout(AbsListView.java) ..."
我想知道哪个Apdater / ListView发生了这次崩溃,所以我想跟踪这些事情:
" com.nhatnq.app.b.cr&#34 ;:包名是隐藏的,我不知道。在我的应用程序中,我有一个" ExpandableContactAdapter扩展BaseExpandableListAdapter"在包com.nhatnq.app.contact.ExpandableContactAdapter.java中,以及一些包含适配器的片段,例如 com.nhatnq.app.fragment.HistoryFragment $ ExpandableHistoryAdapter, com.nhatnq.app.fragment.MessageFragment $ ExpandableMessageAdapter,... 的
ListView(2131493375):这是ListView的ID。我将其从十进制转换为十六进制,然后在我的本地源代码中找到(在R.java中),但未找到此资源ID。也许ID在发布时由时间键编码。
我需要在这里查看,找到正确的ListView / Adapter然后我可以查看?现在我有5个适配器,真的不知道需要检查什么,因为这个问题只发生在某些手机上。 我在团队中工作,其他人负责从团队源代码中发布应用程序。
答案 0 :(得分:0)
您的发布“家伙”可能正在使用Proguard或类似的东西,因此类名称是封闭的(类com.nhatnq.app.b.cr)。这个程序使得某人对代码进行反向工程变得更加困难。
您需要让他回溯(或反混淆)代码,以便您可以正确识别该类。他应该保留这样做的文件,在Proguard的情况下,这里有一个参考:
http://simplyadvanced.net/blog/android-how-to-decode-proguards-obfuscated-code-from-stack-trace/