想在editText.setOnTouchListener中只做一次而不是每次都做一些任务

时间:2015-08-10 12:56:37

标签: android android-activity android-edittext

我想做的事情就像当用户点击editText然后它被启用进行编辑(默认情况下它在xml中被禁用)和toast(以及一些其他按钮)应该只出现一次,而不是每次都出现。

我为此创建了以下逻辑: -

edt_title.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (MotionEvent.ACTION_UP == event.getAction()) {

Crouton.showText(ShowActivity.this, "Editing Mode Enabled",Style.INFO);

welcome.animate(getApplicationContext(), gallery, R.anim.fab_jump_from_down,  300);
                edt_title.setFocusableInTouchMode(true);
            }
            return false;}
    });

问题是当用户点击editText时,每次都会调用它, 单击editText时,有没有办法只执行一次。 也许可以使用sharedPreference,但如果我可以在不使用sharedPreference的情况下做到这一点会更好。

提前致谢:) Nishu

2 个答案:

答案 0 :(得分:0)

一个简单的解决方案是:

edt_title.setOnTouchListener(new View.OnTouchListener() {
    boolean called = false;

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (!called && MotionEvent.ACTION_UP == event.getAction()) {
            Crouton.showText(ShowActivity.this, "Editing Mode Enabled",Style.INFO);
            welcome.animate(getApplicationContext(), gallery, R.anim.fab_jump_from_down,  300);
            edt_title.setFocusableInTouchMode(true);

            called = true;
        }
        return false;
    }
});

答案 1 :(得分:0)

声明一个你使用的全局变量,例如flag并使用一个简单的时间

boolean flagOneTime = true;

并将其添加到您的侦听器

if( flagOneTime )
{
   // do something and disable flag
   flagOneTime = false;
}