触摸处理程序未显示Toast

时间:2015-04-21 21:38:35

标签: android toast android-toast

所以我在主Activity的onCreate()方法中有这段代码;它在一个视图上安装一个触摸监听器,当触摸保持至少5秒时,启用一个特殊的调试模式。

  findViewById(R.id.MainSetupFooterLayout).setOnTouchListener(new View.OnTouchListener() {
     long touchStarted;

     @Override
     public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction();
        if (action == MotionEvent.ACTION_DOWN) {
           touchStarted = System.currentTimeMillis();
           return true;
        }
        else if (action == MotionEvent.ACTION_UP) {
           long touchTime = System.currentTimeMillis() - touchStarted;
           if (touchTime >= 5000) {
              changeDebug();
              invalidateOptionsMenu();

              Toast toast = Toast.makeText(MainSetupActivity.this,
                                           "Debug option " + (debugMode ? "enabled" : "disabled"),
                                           Toast.LENGTH_SHORT);
              toast.setGravity(Gravity.CENTER, 0, 0);
              toast.show();
           }
           return true;
        }
        return false;
     }
  });

我已经向自己证明了所有代码都按照预期运行并完全正常工作(例如,changeDebug()方法会产生导致其他UI更改的副作用),而且我可以逐步完成所有这些操作在调试器中。问题是:Toast 从不显示。

我已经验证了在主(UI)线程上调用onTouch()处理程序。我尝试在UI线程上显式运行与toast相关的代码[使用runOnUIThread()],即使它已经存在于该线程上。

除此之外,至于为什么吐司没有展示,我还是完全不知所措。

任何想法,建议等都将不胜感激。

谢谢! 好色

2 个答案:

答案 0 :(得分:0)

尝试将它放在两种方法之前。

答案 1 :(得分:0)

在模拟器中工作,并在不同的设备上工作。

发现问题:https://code.google.com/p/android/issues/detail?id=35013

@#%$ @&安培;!

感谢所有试图提供帮助的人。 好色