gpt4 book ai didi

java - Android:如何处理按钮点击

转载 作者:IT老高 更新时间:2023-10-28 11:36:47 25 4
gpt4 key购买 nike

在非 Java 和非 Android 领域有扎实的经验,我正在学习 Android。

我对不同的领域有很多困惑,其中之一是如何处理按钮点击。至少有 4 种方法(!!!),它们被简要列出 here

出于一致性目的,我将列出它们:

  1. 在 Activity 中有一个 View.OnClickListener 类的成员,并将其分配给一个实例,该实例将处理 onCreate< 中的 onClick 逻辑 Activity 方法。

  2. 在 'onCreate' Activity 方法中创建 'onClickListener' 并使用 setOnClickListener 将其分配给按钮

  3. 在 Activity 本身中实现“onClickListener”并将“this”指定为按钮的监听器。对于 Activity 按钮很少的情况,应分析按钮 ID 以执行正确按钮的“onClick”处理程序

  4. 在实现 'onClick' 逻辑的 Activity 上具有公共(public)方法,并将其分配给 Activity xml 声明中的按钮

问题 #1:

这些都是方法吗,还有其他选择吗? (我不需要任何其他,只是好奇)

对我来说,最直观的方法是最新的方法:它需要输入的代码最少并且可读性最强(至少对我来说)。

不过,我没有看到这种方法被广泛使用。使用它有什么缺点?

问题 #2:

每种方法的优缺点是什么?请分享您的经验或良好的链接。

欢迎任何反馈!

附:我尝试在 Google 上找到有关此主题的内容,但我发现的唯一内容是描述“如何”做到这一点,而不是为什么它好或坏。

最佳答案

问题 1:不幸的是,您所说的最直观的那个在 Android 中使用最少。据我了解,您应该将 UI(XML)和计算功能(Java 类文件)分开。它还使调试更容易。以这种方式阅读和思考 Android imo 实际上要容易得多。

问题 2:我相信主要使用的两个是#2和#3。我将使用 Button clickButton 作为示例。

2

是匿名类的形式。

Button clickButton = (Button) findViewById(R.id.clickButton);
clickButton.setOnClickListener( new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
***Do what you want with the click here***
}
});

这是我最喜欢的,因为它在使用 findViewById 设置按钮变量的位置旁边有 onClick 方法。处理这个 clickButton Button View 的所有东西都位于这里,看起来非常整洁。

我的同事评论的一个缺点是,假设您有许多需要 onclick 监听器的 View 。你可以看到你的 onCreate 会变得很长。所以他喜欢用:

3

假设你有 5 个点击按钮:

确保您的 Activity/Fragment 实现 OnClickListener

// in OnCreate

Button mClickButton1 = (Button)findViewById(R.id.clickButton1);
mClickButton1.setOnClickListener(this);
Button mClickButton2 = (Button)findViewById(R.id.clickButton2);
mClickButton2.setOnClickListener(this);
Button mClickButton3 = (Button)findViewById(R.id.clickButton3);
mClickButton3.setOnClickListener(this);
Button mClickButton4 = (Button)findViewById(R.id.clickButton4);
mClickButton4.setOnClickListener(this);
Button mClickButton5 = (Button)findViewById(R.id.clickButton5);
mClickButton5.setOnClickListener(this);


// somewhere else in your code

public void onClick(View v) {
switch (v.getId()) {
case R.id.clickButton1: {
// do something for button 1 click
break;
}

case R.id.clickButton2: {
// do something for button 2 click
break;
}

//.... etc
}
}

正如我的同事所解释的那样,这种方式在他看来更整洁,因为所有 onClick 计算都在一个地方处理,而不是拥挤 onCreate 方法。但我看到的缺点是:

  1. 查看自己,
  2. 必须将 onClick 方法使用的任何其他可能位于 onCreate 中的对象制作成一个字段。

如果您想了解更多信息,请告诉我。我没有完全回答你的问题,因为这是一个很长的问题。如果我找到一些网站,我会扩展我的答案,现在我只是提供一些经验。

关于java - Android:如何处理按钮点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14782901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com