触摸表面时,该函数被调用两次

时间:2015-04-28 11:14:39

标签: android android-fragments fragment android-fragmentactivity

我有一个带有可触摸或可点击布局的片段,我不知道为什么当我触摸片段的布局并留下我的手指功能“”retrieveMQTTConnAssets()“”被触发两次“当我触摸表面并保持触摸时我第二次离开手指“

pease et meknow hw避免这种行为。

更新

Actuay,我现在解决了它,而不是返回true,我返回false。但是我不明白,为什么会这样。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Log.w(TAG, "@onCreateView()");
    View root = inflater.inflate(R.layout.eco_frag, container, false);
    root.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            //Toast.makeText(getActivity().getApplicationContext(), "toched", Toast.LENGTH_SHORT).show();
            retrieveMQTTConnAssets();
            return true;
        }
    });
    return root;
}

1 个答案:

答案 0 :(得分:3)

问题很简单,就是那个

root.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        //this is called, right?
        retrieveMQTTConnAssets();
        return true;
    }
});
<{1>}中的

,您会收到一个名为onTouch的参数。 MotionEvent存储名为MotionEvent的内容,其中包含许多值(请参阅reference),但最重要的是actionACTION_DOWN

如果你想让它只在你发布它时才运行,那么你应该检查一下这种行为。

ACTION_UP