我正在使用dexguard
保护我的应用程序。最近我更新了dexgaurd
版本
从8.0.1到8.2.15。之前,更新之前一切正常。但是,当我应用dexguard的版本为8.2.15时,onCick方法在片段SettingsFragment之一中不起作用,对于所有其他Fragments来说都可以正常工作。但是,对于所有片段,实现onClick()的代码和方法都是相同的。但是对于SettingsFragment,它不起作用。请帮忙。
这是我在SettingsFragment中的onClick
方法
View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.relSignOut:
mCallback.doSignOut();
break;
// case R.id.relEditProfile:
// loadManageProfile();
// break;
case R.id.btn_edit_profile:
loadManageProfile();
break;
case R.id.relDynamicFxRate:
parent.startSetExchangeAlertActivity();
break;
}
}
};
提前致谢
最佳答案
(将我的评论转换为答案)
请启动switch语句,并将其替换为if-else。看起来有些不科学和不合逻辑,但我为我工作了很多次。
我不知道这是否是编译器或Android中的可能错误,但有时仅拒绝switch语句无济于事。然后,我必须将view.getId()
替换为view.getPosition()
并按顺序或类似方式进行检查,以使其正常运行。
来自T.Neidhart的评论:失败的原因可能是由于资源优化重新映射了资源ID。通常,这些重新映射的资源ID在代码中的任何地方都会被替换,但是如果使用switch语句,则可能会出错。您可以像这样禁用资源优化:-优化资源/压缩–