【问题标题】:onClick() does not work after appying dexguard. Is there any way to solve this?应用 dexguard 后 onClick() 不起作用。有没有办法解决这个问题?
【发布时间】:2018-09-24 05:50:24
【问题描述】:

我正在使用dexguard 来保护我的应用程序。最近我更新了dexgaurd 版本 从 8.0.18.2.15。早些时候,在更新之前一切正常。但是对于 8.2.15 版本,当我应用 dexguard 时,onCick 方法不适用于片段 SettingsFragment 之一,对于所有其他 片段它工作正常。然而,实现 onClick() 的代码和方法对于所有 Fragments 都是相同的。但是对于 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;
            }
        }
    };

提前致谢

【问题讨论】:

  • 请分享您的代码。
  • @QandilTariq 感谢您的评论,SettingsFragment 的代码?
  • 分享你实现的onclick的代码(设置碎片...)先生
  • 是的,请分享设置片段代码。
  • 请启动 switch 语句并将其替换为 if-else。可能看起来有点不科学和不合逻辑,但我认为它会起作用。如果不起作用,请尝试使用其他方法(例如位置)而不是 id 检查不同的按钮

标签: android dexguard


【解决方案1】:

您应该排除对 onClick 方法的混淆,如下所示:

-keepclassmembers class * {
    public void onClick (android.view.View);
}

【讨论】:

  • 感谢您的回答,但我已经这样做了。它没有帮助。如果它混淆了 onClick(),那么它应该混淆了所有的 onCilicks()。在我的情况下,onClick() 适用于所有片段,但仅在 SettingsFragments 中不起作用。
  • 你可以不使用onClick吗?我的意思是直接将侦听器设置为目标小部件。
【解决方案2】:

(将我的评论转换为答案)

请启动 switch 语句并将其替换为 if-else。可能看起来有点不科学和不合逻辑,但我为我工作了很多次。

我不知道这是否是编译器或 Android 中可能存在的错误,但有时仅拒绝 switch 语句并没有帮助。然后我必须用view.getPosition() 替换view.getId() 并按订单或类似的方式检查以使其正常工作。

来自 T.Neidhart 的评论:它失败的原因可能是由于重新映射资源 ID 的资源优化。通常这些重新映射的资源 ID 在代码中的任何地方都会被替换,但在 switch 语句的情况下可能会出错。您可以像这样禁用资源优化:-optimizations resource/compaction –

【讨论】:

    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2020-02-25
    • 2018-04-13
    • 2012-02-10
    • 2020-12-13
    • 2011-02-18
    相关资源
    最近更新 更多