首页 > 解决方案 > 2 个 onClick() 方法 - 其中一个被忽略

问题描述

我有一个对话框,我想在单击按钮时关闭它。

public class Dialog extends DialogFragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_general, container, false);

        ViewGroup group = (ViewGroup) view.findViewById(R.id.root);
        View v;
        for(int i = 0; i < group.getChildCount(); i++) {
            v = group.getChildAt(i);
            if(v instanceof Button) {
                v.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        getDialog().dismiss();
                    }
                });
            }
        }
        return view;
    }
}

好吧,对话框将关闭,所以我的脚本似乎可以工作,但问题在于onClick()方法。在我的 MainActivity 类中,我还有另一个onClick()方法可以在单击按钮时播放音频。所以onClick()类的Dialog将简单地关闭对话框但不会再播放音频。我不确定,但这可能是因为@Override但即使我删除@Override,音频仍然不会播放。

如何同时播放音频并关闭对话框?

标签: javaandroid

解决方案


正如我正确理解的那样。您有 2 个 onClickListener,与 2 个不同的视图相关(我们称它们为 btn1 和 btn2)。因此,当您单击 btn1 时,仅 onClick FOR THIS BTN 将起作用!这是合乎逻辑的正常行为

所以。当您单击 btn1 时,您也想从 btn2 调用 onClick。你怎么能这样做?只需将代码从 onClick(btn2) 添加到 onClick(btn1)。没关系。

如果您想重构它以不重复某些代码 - 您可以将代码从 onClick2 移动到方法并在 onClick1 和 onClick2 中调用它。


推荐阅读