Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ';如果';条件为真,但';其他';正在被处决_Android_Eclipse - Fatal编程技术网

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否,只有一个线程。