
我的部分用户遇到了崩溃问题,这是Google Play开发者控制台崩溃报告中显示的错误:
无法启动活动ComponentInfo {com.havens1515.autorespond / com.havens1515.autorespond.SettingsMenuNew}:android.app.Fragment $InstantiationException:无法实例化片段com.havens1515.autorespond.Notificationoptions:确保类名存在,是公共的,并有一个公共的空构造函数
用户说当打开上面的错误中提到的SettingsMenuNew中的任何设置菜单时会发生这种情况,但我没有在手机上遇到崩溃. SettingsMenuNew是PreferenceActivity,所有子菜单都是PreferenceFragment
每个PreferenceFragment都有一个空构造函数,我不知道问题还有什么.我还在其他人的问题中看到它需要newInstance方法,但如果我没有在片段中添加任何其他参数,我认为我真的不需要它.
这里有一些显示这些方法的代码:
public class Notificationoptions extends PreferenceFragment{ public Notificationoptions() { } public static Notificationoptions newInstance(int Title, String message) { Notificationoptions f = new Notificationoptions(); return f; } ...}解决方法:
这可能是因为proguard删除了你的碎片.
要重现,构建混淆的APK,在开发人员选项中启用“不要保持活动”,打开包含崩溃的片段的活动.最小化主页按钮并从最近恢复应用程序.
要将proguard配置与ADT中的默认配置和您的配置合并,您应该在project.propertIEs中指定
proguard.config=${sdk.dir}/tools/proguard/proguard-androID.txt:proguard-project.txt如果您正在使用Gradle构建系统
buildTypes { deBUG { runProguard false } release { runProguard true proguardfiles getDefaultProguardfile('proguard-androID.txt'), 'proguard-project.txt' }}而proguard-project.txt至少应该包含这些规则
-keep public class * extends androID.preference.PreferenceFragment如果你正在使用支持片段
-keep public class * extends androID.support.v4.app.Fragment-keep public class * extends androID.support.v4.app.FragmentActivity不要忘记${sdk.dir} /tools/proguard/proguard-androID.txt中已经包含一些规则,因此只根据您的需要添加缺失.
总结以上是内存溢出为你收集整理的java – 片段实例化崩溃全部内容,希望文章能够帮你解决java – 片段实例化崩溃所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)