Android ';如果';条件为真,但';其他';正在被处决
Android ';如果';条件为真,但';其他';正在被处决,android,eclipse,Android,Eclipse,if条件为true,但执行else代码段中的代码 我已经尝试重新启动Eclipse,但没有效果。您尝试过吗 mPlayer.getCurrentPosition()等于(“0”) 还可以尝试将代码放入if块中的else块中(反之亦然)似乎有两个问题 问题1: 第一个问题是MediaPlayer mediaPlayer.stop(); mediaPlayer.getCurrentPosition(); // The current position in milliseconds 在上面的代码
if
条件为true,但执行else
代码段中的代码
我已经尝试重新启动Eclipse,但没有效果。您尝试过吗
mPlayer.getCurrentPosition()等于(“0”)
还可以尝试将代码放入if块中的else块中(反之亦然)似乎有两个问题 问题1: 第一个问题是
MediaPlayer
mediaPlayer.stop();
mediaPlayer.getCurrentPosition(); // The current position in milliseconds
在上面的代码中,第二行返回8549
,而mediaPlayer已经停止。我估计停止媒体播放器后,getCurrentPosition
方法将返回零毫秒
问题2:
第二个问题(实际上就是本文的答案)是调试器。这似乎是调试器中的一个bug
mPlayer.getCurrentPosition() // value in debugger is 0 (as shown in the screenshot in OP)
mPlayer.getCurrentPosition() == 0 // value in debugger is true (as shown in the screenshot in OP)
但当我在logcat中记录完全相同的内容时,它会给出不同的结果:
Log.d("pos", mPlayer.getCurrentPosition()+""); // prints a non-zero value in log, in my case 8549
Log.d("con", String.valueOf( mPlayer.getCurrentPosition() == 0 ) ); // prints a false value in log
这清楚地说明了为什么执行else
代码段,以及为什么我们有时不应该盲目地依赖调试器:-p
摘要
每当您在调试器中看到这种戏剧性的行为时,请尝试在logcat中记录变量。(归功于Wakim,因为他的评论给了我方向)您能使用
Log.i(…)
输出该表达式值吗?您是否尝试过清理和构建项目?是否有多个线程访问该流?也许它是在后台播放的。您如何确定在评估手表时,它的值与使用if语句测试时的值相同?@Wakim在LogCat中给出了不同的值。这里的条件是false
,并且MediaPlayer
的getCurrentPosition()
给出了非零值。@kichik否,只有一个线程。