【发布时间】:2012-01-28 22:54:44
【问题描述】:
我在呼叫按钮上设置了一个监听器,起初我只是想确保监听器正常工作,所以我在其中放置了一个日志语句。但是由于某种神秘的原因,当我单击它时它拒绝打印!所以也许呼叫按钮是空的,我想,并添加了一个 else 语句......但它没有从 if 或 else 语句中打印任何东西!!!它会打印前后的语句,但完全忽略 if-else 结构中的所有内容。代码如下:
ImageButton call = (ImageButton) v.findViewById(R.id.callButton);
Log.d("MEETINGS", "ABOUT TO WORK W/ CALL");
Log.e("MEETINGS", "" + (call != null));
if (call != null) {
Log.d("PHONE", "setting stuff on call...");
call.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.d("PHONE", "on call : " + phone);
}
});
} else {
System.out.println("why is this messed up");
Log.d("PHONE", "call button was null!");
}
System.out.println("what the heck is going on");
在尝试解开 Java 如何决定跳过 if 和 else 的奥秘至少 15 分钟后,我尝试为日志语句赋予不同的标签。
还有尤里卡!那成功了!我将“PHONE”更改为“BLAH”,突然世界又变得有意义了!好奇,我把它改成了“电话”,它拒绝再次打印。
故事的寓意:永远不要在 logcat 中使用标签“电话”或“电话”!!!
有人可以向我解释一下 logcat 如何和/或为什么忽略带有“PHONE”标签的消息吗?
【问题讨论】: