我遇到了一个小问题" 0"使用putExtra进行活动,我在日志中得到了一些奇怪的结果:
0 假
但一定是 0 真
什么事
public class ItemEditCreate extends Activity{
String name;
EditText editText;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_create);
if (savedInstanceState == null){
Bundle extras = getIntent().getExtras();
if (extras == null){
name = null;
}else{
name = extras.getString("Item");
}
}else{
name = (String) savedInstanceState.getSerializable("Item");
}
Log.i("Hello",name);
Log.i("Hello",Boolean.toString((name == "0")));
if (name == "0"){
setTitle("Добавление элемента");
}else{
setTitle("Редактирование элемента");
editText = (EditText) findViewById(R.id.edited_name);
editText.setText(name);
}
}
}
答案 0 :(得分:1)
你做错了比较,我认为你必须使用,
Log.i("Hello",Boolean.toString((name.equals("0")));
修改:: 强>
使用==和!=运算符
比较对象引用可以与对象引用一起使用的两个运算符是比较相等(==)和不等(!=)。这些运算符比较两个值以查看它们是否引用同一对象。虽然这种比较非常快,但通常不是你想要的。
通常您想知道对象是否具有相同的值,而不是两个对象是否是对同一对象的引用。例如,
if (name == "Mickey Mouse") // Legal, but ALMOST SURELY WRONG
仅当name是对“Mickey Mouse”引用的同一对象的引用时才会出现这种情况。如果名称中的String是从输入中读取或计算出来的(通过将字符串放在一起或使用子字符串),这将是错误的,即使名称确实确实包含其中的字符。
许多类(例如String)定义equals()方法来比较对象的值。
使用equals()方法
比较对象值使用equals()方法比较对象值。 equals()方法返回一个布尔值。可以通过编写:
来修复前面的示例if (name.equals("Mickey Mouse")) // Compares values, not references.
因为equals()方法首先进行==测试,所以当对象相同时,它可以相当快。它仅比较两个引用不相同的值。
答案 1 :(得分:1)
问题是条件name == "0"
。 ==
运算符不会比较两个字符串的值。要比较两个字符串的值,请使用equals()
或equalIgnoreCase()
方法
使用name.equals("0")
或name.equalsIgnoreCase("0")
答案 2 :(得分:0)
要比较字符串是否相等,请不要使用==
。 ==
运算符检查两个对象是否完全相同。 两个字符串可能是不同的对象,但具有相同的值(其中包含完全相同的字符)。使用.equals()
方法比较Strings
是否相等。
答案 3 :(得分:0)
我认为你已经实现了错误的字符串比较:
if (name == "0")
你可以实现:
name.equalsIgnoreCase("0");
or
name.equals("0");
答案 4 :(得分:0)
您必须使用equals()
方法来比较两个字符串..使用
Boolean.toString((name.equals("0")))