所以我在主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()],即使它已经存在于该线程上。
除此之外,至于为什么吐司没有展示,我还是完全不知所措。
任何想法,建议等都将不胜感激。
谢谢! 好色
答案 0 :(得分:0)
尝试将它放在两种方法之前。
答案 1 :(得分:0)
在模拟器中工作,并在不同的设备上工作。
发现问题:https://code.google.com/p/android/issues/detail?id=35013
@#%$ @&安培;!
感谢所有试图提供帮助的人。 好色