-4
    savedInstanceState = getIntent().getExtras();
    String type = savedInstanceState.getString(TYPE);
    if(type == "tree")
    {
        setContentView(R.layout.activity_sound_tree);
    }
    else
    {
        TextView tv = (TextView) findViewById(R.id.heading_sound);
        tv.setText("'"+type+"'");
    }

我在第二个活动中使用了此代码。我确定类型 == 树。所以我不明白为什么第一个“if”块会失败。它总是进入“else”块,即使我 100% 确定 type == "tree"。有人可以指出我正确的方向吗?

4

3 回答 3

3

切勿将字符串值与==运算符进行比较。请改用该equals方法。

==运算符通过引用而不是值来比较对象。

Javadoc:http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object)

固定代码:

savedInstanceState = getIntent().getExtras();
String type = savedInstanceState.getString(TYPE);
if(type.equals("tree"))
{
    setContentView(R.layout.activity_sound_tree);
}
else
{
    TextView tv = (TextView) findViewById(R.id.heading_sound);
    tv.setText("'"+type+"'");
}
于 2013-05-23T16:59:57.970 回答
0

这看起来像经典的字符串比较问题,试试

"tree".equals(type); // This is also safe from NullPointerException since you are comparing type with a constant 'tree', which is not null

为什么等于?

关于使用==vs的详细解释equals()可以在这里找到

于 2013-05-23T17:00:05.533 回答
0

采用

type.equals("tree")

代替

type == "tree"

原因

equls 方法检查对象的值,其中 == 运算符检查它们是否是相同的对象实例。

于 2013-05-23T17:02:24.003 回答