【问题标题】:Which one is the best method for implementing action on Android button哪一种是在Android按钮上实现动作的最佳方法
【发布时间】:2023-03-17 06:00:01
【问题描述】:

我想知道Android是如何提供几种方法来实现它的按钮点击方法的。至少我找到了两种方法,第一种是在 Java 代码上使用命令侦听器,第二种是在 xml 中使用android:onClick ="method",在 java 中使用public void method(View v)。所以我的问题是,在编程的简单性和有效性的情况下,哪一个是最好的。谢谢。

【问题讨论】:

  • 我更喜欢“声明性”标记 - 我现在“只”使用 M$FT 标记。

标签: android button listener


【解决方案1】:

我听说经常在 xml 中定义 onClick 会导致 proguard 出现问题。就我个人而言,我觉得最简单的方法是在 onclicklistener 中使用 switch 和 case,但如果方法更长,那么最好给它自己的方法,以便“隐藏”它。但是,如果您需要在按下任何按钮后运行通用代码(例如 UI 刷新),最好将其留给 switch 和 case 或 if/else

// 只是为了那些想在xml和proguard中使用OnClick的人添加

添加这个:

 -keepclassmembers class * extends android.app.Activity { 
   public void *(android.view.View); 
 }

然而,在我的拙见中,越混淆越好:P

【讨论】:

  • 是的,如果我们有很多按钮,定义一个 switch case 块也会使代码更简单,但实际上 proguard 是什么?
  • 添加了如何解决这个问题@pst
  • (直接来自开发者网站):ProGuard 工具通过删除未使用的代码和重命名语义模糊名称的类、字段和方法来缩小、优化和混淆您的代码。结果是较小的 .apk 文件更难进行逆向工程。由于 ProGuard 使您的应用程序更难进行逆向工程,因此当您的应用程序利用对安全性敏感的功能时(例如在为应用程序授权时),使用它非常重要。
  • 所以换句话说,当我在xml中使用onClick时,我需要将这些代码放在我的应用程序中吗? -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); }
  • 仅当您想添加一层安全性并且仅当您出于上述原因需要它时才会这样做
【解决方案2】:

Java 通常更容易,因为如果您以多个 XML 布局(不同的方向、分辨率、语言等)结束一个 Activity,那么每次您想要添加、更改或删除一个事件(例如,长按)。您必须修改的文件数量越少越好。此外,通过将各种事件的命名保留在 XML 文件之外,您可以将它们保持在最小大小,仅包含表达每种布局真正不同之处所需的信息,而不是在它们上重复一些信息。

使用 Java,您还可以在创建代码时拥有更多可能性。例如,您可以创建一个匿名类并使用它来捕获一些当前状态以供您的侦听器使用。

最后,如果你想动态创建一些按钮/字段;您可以保持管理事件的过程相同,而不是在不同的文件中使用两种不同的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 2016-11-08
    • 1970-01-01
    • 2013-05-03
    • 2011-07-08
    • 2010-09-09
    • 1970-01-01
    • 2012-01-29
    相关资源
    最近更新 更多