'若'条件是真实的,但“其他”'正在执行

时间:2014-09-14 15:31:31

标签: android eclipse

if条件为真,但else代码段中的代码已被执行。

enter image description here

我已经尝试重启Eclipse,但没有帮助。

2 个答案:

答案 0 :(得分:1)

似乎有两个问题。

问题1:

第一个问题是使用getCurrentPosition()

MediaPlayer方法
mediaPlayer.stop();
mediaPlayer.getCurrentPosition(); // The current position in milliseconds

在上面的代码中,第二行返回8549,而mediaPlayer已经停止。我觉得在停止媒体播放器后,getCurrentPosition方法将返回零毫秒。

问题2:

第二个问题(实际上是这篇文章的答案)是调试器。它似乎是调试器中的一个错误。

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,因为他的评论给了我指示)

答案 1 :(得分:0)

你试过吗

  

mPlayer.getCurrentPosition()。equals(&#34; 0&#34;)

还尝试将代码放在if块中的else块中(反之亦然)