Android:比较处理程序消息

时间:2016-12-28 11:49:57

标签: android

我正在比较处理程序消息,以根据消息确定要执行的操作: 但不知何故,当消息是" 1"比较仍列出m ==" 1"如此假如何?

enter image description here

2 个答案:

答案 0 :(得分:2)

问题在于,您要比较两个对象是否共享相同的内存地址。你应该比较两个对象的内容。

解决方案:使用String.equals比较字符串值的内容。

if("1".equals(m)){

}

注1:对于基本类型(int,double,float,short和byte)==将起作用,因为比较实际值而不是内存地址。对于对象(非基元)==总是比较两个对象的内存地址。

注2: @pskink发表了非常有用的评论,您确实应该使用Message.what代替Message.objMessage.obj对于传输所需的实际数据(在同一个流程中)非常有用,但不能识别消息本身。

答案 1 :(得分:1)

你的if条件应该是这样的

if(m==1) //is for int

if(m.equals("1")) //is for string