1

每次我按下输入键时,即使它不应该出来,吐司也会不断弹出......

在我的代码中花很多时间:

etAddMove.setOnKeyListener(new OnKeyListener() {

            @SuppressLint("NewApi")
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                // TODO Auto-generated method stub
                if(keyCode == KeyEvent.KEYCODE_ENTER && event.getRepeatCount() == 0){
                    String ssmoveName = etAddMove.getText().toString();
                    int x = ssmoveName.length() - 1;
                    if (ssmoveName.isEmpty() || Character.isWhitespace(ssmoveName.charAt(0)) || Character.isWhitespace(ssmoveName.charAt(x))) {
                        Toast.makeText(ListMovingNames.this, 
                                "Please enter a valid name! Avoid giving a blank name or white space at the beginning or end of the name", 
                                Toast.LENGTH_LONG).show();
                    }else{
                        try {
                            SQLHandler check = new SQLHandler(ListMovingNames.this);
                            check.open();
                            String scheck = check.checkMove(ssmoveName);
                            check.close();
                            if (!scheck.equals(ssmoveName)) {
                                Toast.makeText(ListMovingNames.this, "Move name already exist please give a different name", Toast.LENGTH_LONG).show();
                            } else{
                                SQLHandler entry = new SQLHandler(ListMovingNames.this);
                                entry.open();
                                entry.createMove(ssmoveName);
                                entry.setTodo(ssmoveName);
                                entry.close();
                                Intent i = new Intent(getApplicationContext(), StartMoving.class);
                                i.putExtra("moveName", ssmoveName);
                                startActivity(i);
                            }
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            SQLHandler entry = new SQLHandler(ListMovingNames.this);
                            entry.open();
                            entry.createMove(ssmoveName);
                            entry.setTodo(ssmoveName);
                            entry.close();
                            Intent i = new Intent(getApplicationContext(), StartMoving.class);
                            i.putExtra("moveName", ssmoveName);
                            startActivity(i);
                        }
                    }
                    return true;
                }

                return onKeyDown(keyCode, event);
            }
        });

如果我不想表现出来,你怎么能让这家伙停下来……

编辑

我想我知道为什么会发生这种情况,这一定是因为每次我按 enter keyup 并且 keydown 都会初始化,这就是为什么第一次初始化是 keydown 调用条件并返回 false 并且当调用 keydown 时再次调用条件将返回真的,制作吐司展示。这就是我目前的想法......

4

3 回答 3

0

如果不起作用,请尝试以下操作然后了解。

Toast toast;
    toast.makeText(getApplicationContext(), "text", Toast.LENGTH_SHORT).show();
if(Yourcondition)
    {
        toast.show();
    }
    else
    {
        //nothing to display
    }
于 2012-10-04T05:20:34.003 回答
0

终于解决这个问题了。因为我怀疑吐司一直显示的原因是每次按下回车键时,都会调用 keydown 和 keyup 这就是为什么调用两次使吐司出现的原因,因为在调用过程时满足显示吐司的条件第二次。

所以为了避免这种情况KeyEvent.ACTION_DOWN必须存在。

public boolean onKey(View v, int keyCode, KeyEvent event) {
                // TODO Auto-generated method stub
                if ( (event.getAction() == KeyEvent.ACTION_DOWN  ) && (keyCode== KeyEvent.KEYCODE_ENTER)   )
                {               
                    // do something here
                    }
                    return true;
                }
于 2012-10-15T03:24:14.160 回答
-1

用这个:

   Toast toast;
        toast.makeText(getApplicationContext(), "text", Toast.LENGTH_SHORT);

    if(Yourcondition)
        {
            toast.show();
        }
        else
        {
            //nothing to display
        }

在最后一个答案中,您.show在创建吐司时正在使用方法。它会显示偶数,如果陈述是真的与否。所以,.show

toast.makeText(getApplicationContext(), "text", Toast.LENGTH_SHORT).show();

这个说法。

这可能会有所帮助。

于 2012-10-05T05:43:21.273 回答