如何在片段中使用 XML onClick 处理按钮点击

2023-11-23

在 Honeycomb 之前 (Android 3),每个 Activity 均注册为通过以下方式处理按钮点击:onClick布局 XML 中的标记:

android:onClick="myClickMethod"

在该方法中您可以使用view.getId()和一个 switch 语句来执行按钮逻辑。

随着 Honeycomb 的引入,我将这些活动分解为片段,这些片段可以在许多不同的活动中重复使用。按钮的大部分行为与活动无关,我希望代码驻留在片段文件中without使用旧的(1.6 之前)的注册方法OnClickListener对于每个按钮。

final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Perform action on click
    }
});

问题是,当我的布局膨胀时,接收按钮点击的仍然是托管活动,而不是单个片段。有没有好的方法

  • 注册片段以接收按钮点击?
  • 将点击事件从Activity传递到它们所属的fragment?

我更喜欢使用以下解决方案来处理 onClick 事件。这也适用于活动和片段。

public class StartFragment extends Fragment implements OnClickListener{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_start, container, false);

        Button b = (Button) v.findViewById(R.id.StartButton);
        b.setOnClickListener(this);
        return v;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.StartButton:

            ...

            break;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在片段中使用 XML onClick 处理按钮点击 的相关文章

随机推荐

  • Stripe:为订阅添加免费天数

    是否可以为 Stripe 上的有效订阅添加免费天数 我想这样做是为了创建一个推荐计划 当用户推荐某人时 他将获得 10 天的免费时间 我认为一个好方法是更新current period endvar 但我在文档中找不到如何执行此操作 例如
  • Array.Sum() 导致溢出

    我有一个像这样的 int 数组 int arr 256741038 623958417 467905213 714532089 938071625 然后我创建了一个 int64 var Int64 sum arr Sum 但这导致了溢出 运
  • Delphi XE - RawByteString 与 AnsiString

    我在这里有一个类似的问题 Delphi XE 我应该使用 String 还是 AnsiString 在决定在我的 大型 库中使用 ANSI 字符串是正确的之后 我意识到我实际上可以使用 RawByteString 而不是 ANSI 因为我将
  • 创建可下载的自定义主题并在运行时应用它

    我正在制作一个 Android 应用程序 需要允许客户端维护来自服务器的资源 其中包括字符串 可绘制对象等 我已经创建了一种机制来下载包含所有这些文件的 zip 文件 并且它们能够非常轻松地更改字符串 我还创建了一种允许客户端更改 UI 控
  • Java抽象类和接口[重复]

    这个问题在这里已经有答案了 在面试中我被问到以下问题 我试图回答这个问题 但我想要问题的确切答案 如果我可以将抽象类模拟为接口 为什么java还要提供接口呢 这意味着如果在抽象类中我可以将所有方法标记为抽象 然后抽象类将充当接口 那么为什么
  • 将包含字典列表的列转换为 pandas 数据框中的多列

    我有一个 Pandas 数据框 如下所示 pd DataFrame a 1 2 b c 1 d 5 c 3 d 7 c 10 d 50 Out 2 a b 0 1 u c 1 u d 5 u c 3 u d 7 1 2 u c 10 u d
  • Mongoid:如何仅加载通过引用延迟加载的对象的某些字段?

    出于性能原因 我尽可能经常使用only 编写 mongoid 查询时使用关键字来指定我想要加载的字段 通常的嫌疑是 例如 当我希望所有管理员的用户电子邮件仅用于显示目的时 我会写 User where groups gt admins on
  • Linq to Entity 从 DateTime 获取日期

    var islemList 来自Entity Islemler中的isl 其中 isl KayitTarihi 日期 gt dbas isl KayitTarihi Value Date 它给出错误 LINQ to Entities 不支持
  • 如何获取包含图像的 contenteditable div 的插入符位置

    我有这个 contenteditable div div minubyv img src class emojiText iubyvt div Here is an image description of the code output
  • android 自定义对话框背景

    我需要在我的 Android 应用程序中显示自定义对话框 标准AlertDialog设计是不可接受的 Android 文档说 提示 如果您想要自定义对话框 您可以显示一个 Activity 作为对话框而不是使用对话框 API 只需创建一个
  • 有没有办法在匹配 url 之前更改 request.path?

    当我收到包含 self 一词的路径请求时 我想在将其与 URL 匹配之前将其替换为用户 ID 我尝试使用这样的中间件 def process request self request if self in request path requ
  • 在Linux中,如何使用外部jar文件执行Java jar文件?

    在Linux中 如何使用外部jar文件执行Java jar文件 要么使用 cp flag java cp path to somefolder jar path to otherfolder jar com YourMainClass 或者
  • 通过 https 从 C# 使用 POST 进行发布

    浪费了两天时间后这个问题 并试图让它发挥作用 我决定退后一步 问一个更基本的问题 因为显然有些东西我不知道或者我做错了 要求很简单 我需要通过 https 进行 HTTP post 传递一些值 来自 C 该网站 如果给定了适当的值 将返回一
  • 浏览器会解析/预渲染/绘制显示:无HTML吗?

    我想阻止浏览器执行解析和预渲染或绘制一些 隐藏 HTML 的工作 直到我准备好显示它 以便我可以快速显示一组最小的内容 让浏览器只执行以下操作渲染可见的部分 我正在寻找初始页面加载的最大渲染 绘制速度 我当前的 HTML div div c
  • pygame 错误:“ImportError:没有名为 'pygame' 的模块”

    这是我的情况 我尝试导入pygame在 python 3 4 2 和 python 3 6 3 中都使用pip and pip3分别 在 python 3 4 2 shell 中 回溯 最近一次调用最后一次 是 文件 第 1 行 位于导入p
  • 评估 100 * 2.55 值时得到错误结果

    我使用以下方法得到错误的结果 public double evaluate final double leftOperand final double rightOperand Double rtnValue new Double left
  • Service Fabric 微服务与 Azure 云服务/Web 应用程序集合的优势

    我有一个可以分解为多个通信服务的应用程序 我当前的实现是整体的 我想重新组织它 以便可以独立地部署 迭代和扩展各个组件 我发现使用 Azure 有两种方法可以实现此目的 Service Fabric 服务由一组通信微服务 无状态 Web A
  • 应用 ElementStyle 时 DataGridCheckBoxColumn 丢失 IsReadOnly 状态

    我需要垂直居中DataGridCheckBoxColumn 因为我没有找到里面的房产DataGridCheckBoxColumn 我应用了ElementStyle 然而 当应用这种风格时 我的CheckBox再次变为可检查 尽管它被设置为R
  • 如何在Eclipse平台上自动启动/热启动OSGi服务

    我开发了一个 Eclipse RCP 应用程序 该应用程序大量使用 OSGi 捆绑包 这些捆绑包提供服务以供以后使用 该用例要求捆绑包注册其服务 例如导入过滤器 以便稍后在不同情况下使用 OSGi 捆绑包是使用 maven bundle p
  • 如何在片段中使用 XML onClick 处理按钮点击

    在 Honeycomb 之前 Android 3 每个 Activity 均注册为通过以下方式处理按钮点击 onClick布局 XML 中的标记 android onClick myClickMethod 在该方法中您可以使用view ge