gpt4 book ai didi

java - 如何在单独的类中提供所有 ContextMenu 逻辑?

转载 作者:行者123 更新时间:2023-12-01 04:52:01 24 4
gpt4 key购买 nike

我试图将所有 ContextMenu 逻辑放在一个单独的类中,但似乎我无法在此类中识别是否有人选择了某个项目。

我有一个具有主要 Activity 的应用程序。除了其他一些内容之外,此 Activity 还包含一个 ListView 。该 ListView 应该包含一个上下文菜单,因此我将其定义为与其 Clicklistener 相对应:

MyListener myListener = new MyListener();

listview.setOnItemClickListener(myListener);
listview.setOnCreateContextMenuListener(myListener);

MyListener 实现了 OnItemClickListener 和 OnCreateContextMenuListener。我这样做是为了保持类的可读性(就像之前提到的,已经有一些其他 UI 组件和一些逻辑)。到目前为止,一切都像魅力一样。单击可被识别,并且还会显示 ConextMenu。

现在我还希望 MyListener 也能对 ContextMenu 中选择的项目使用react。不幸的是,只有 Activity 及其相应的子类似乎提供了像 onContextItemSelected(menuItem item) 这样的方法。因此,我必须将该逻辑放入我的主要 Activity 中,并通过这样做来分发我的 ContextMenu 逻辑(我也测试了这个,它有效,但在我看来分发逻辑似乎是不行的)。

我错过了什么吗?有没有办法以另一种方式为我的 ListView 定义某种 ContextMenu ClickListener,而不是将其放入我的主要 Activity 中?还是我在没有意识到的情况下做了一些不好的做法?

期待您的意见!

欢呼无眼

最佳答案

一个快速简单的解决方案是将点击转发到您的 MyListener 类。
MyListener 类中创建一个新方法。理想情况下,我会像原始方法一样调用它:

public boolean onContextItemSelected(MenuItem item)
在这个方法中,您可以实现您的逻辑。

然后将您的 MyListener 变量设为 Activity 的字段。
现在,只需在 Activity 中重写 onContextItemSelected(MenuItem item) 并将点击转发到您的监听器类:

@Override
public boolean onContextItemSelected( MenuItem item ) {
return myListener.onContextItemSelected( item );
}

关于java - 如何在单独的类中提供所有 ContextMenu 逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14799219/

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