我有一个设置活动,其中有一个片段,其类被实现为静态内部类。
设置活动类是这样的
public class SettingsActivity extends AppCompatActivity implements
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {...
public static class HeadingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {...}
...
}
}
类在xml中引用如下
<Preference app:fragment="myapp.SettingsActivity$HeadingsFragment" ... />
然后我试着在模拟器中测试它,它工作得很好。但在实际设备中测试时得到了以下错误。
android .fragment.app. fragment $e:无法实例化fragment myapp。设置$HeadingsFragment:确保类名存在
尝试捕获机器人脚本并在Firebase中使用多个不同的设备进行测试,仍然得到错误。
请注意,我能够成功捕获机器人脚本只是因为它在模拟器上工作。
是什么导致了这个问题?
更新:
- 尝试将类作为独立的公共类(而不是静态内部类),仍然得到错误。
- 分析生成的APK,类在这两种情况下都出现在classes2. index中
我尝试了这里提供的解决方案
基本上是被proguard规则搞砸了。将这些行添加到proguard-rules中。文件解决问题
-keep public class * extends androidx.preference.Preference
-keep public class * extends androidx.preference.PreferenceFragmentCompat