在将短信的内容与文本进行比较时,它不起作用。任何人都可以帮我解决这个问题吗?在这里,我想要基于短信内容的a和b的计数。如果sms内容是a,它将给出计数1.如果另一个sms也有内容a,那么count必须递增到1,即2.下面是我的代码:
package com.example.sms;
import java.util.ArrayList;
import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;
public class Sms extends Activity {
int count=0;
int count1=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sms);
TextView view1 = (TextView)findViewById(R.id.textview1);
TextView view2 = (TextView)findViewById(R.id.textView2);
Uri uriSMSURI = Uri.parse("content://sms/inbox");
Cursor cur = getContentResolver().query(uriSMSURI, null, null, null,null);
String sms = "";
String data = null;
while (cur.moveToNext()) {
sms =cur.getString(12);
if(sms=="a"){
count=count+1;
view1.setText("a"+count+")");
}
else if(sms=="b"){
count1=count1+1;
view2.setText("a("+count+")");
}
else{
//view1.setText("no data");
}
//data.add(cur.getString(12));
// view1.setText(cur.getString(12));
}
//view1.setText(sms);
//setContentView(view);
}
}
答案 0 :(得分:3)
Java中的String
类不是原始类型。因此,==
运算符不会给出您期望的结果 - 它将比较内存地址,而不是字符串的内容。
您应该使用String类的equals()
方法来比较字符串。
在这种情况下,您可以使用:
if (sms.equals("a") {
// ...
}
答案 1 :(得分:3)
您的比较无效,因为您需要使用.equals()
来比较字符串。
if (sms.equals("a")){
count = count + 1;
view1.setText("a" + count + ")");
}
else if (sms.equals("b")){
count1 = count1 + 1;
view2.setText("a(" + count + ")");
}
答案 2 :(得分:-1)
使用.equals()
代替==
代码