使用putExtra将数据传递给活动

时间:2011-12-12 11:43:31

标签: android android-activity

我遇到了一个小问题" 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);
    }
}
}

5 个答案:

答案 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")))