0

我目前正在尝试跨活动传递字符串。该字符串用于在第二个活动中设置图像。因此,用户在第一个活动中单击一个按钮,然后根据选择的内容在第二个活动中加载适当的图像。第一个活动中有三个按钮,它们都应该向下一个活动发送一个字符串值。

这是我在第一个活动中的内容:

Button archerButton = (Button) findViewById(R.id.Button_Archer);
archerButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        String selection = "archer";
        Bundle basket = new Bundle();
        basket.putString("key", selection);
        Intent i = new Intent(SelectCharacterActivity.this, LevelOneActivity.class);
        i.putExtras(basket);
        startActivity(i);
        finish();
        }
    });
}

接收活动具有以下代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    setContentView(R.layout.level_one);

    ImageView img = (ImageView) findViewById(R.id.Character_Chosen);

    Bundle extras = getIntent().getExtras();
    String Toon = extras.getString("key");

    if(Toon=="archer"){
        img.setImageResource(R.drawable.archer);
    }

    if(Toon=="mage"){
        img.setImageResource(R.drawable.mage);
    }
    if(Toon=="warrior"){
        img.setImageResource(R.drawable.warrior);
    }
}     

我知道接收 if 语句部分有效,因为如果我手动设置值 Toon 图像将加载。因此,某处信息未正确发送或读取。我在网上遵循了一个教程,但对此感到困惑。

4

5 回答 5

2

你在比较你的字符串错误,

Toon=="Anything"

永远不会是真的,你需要使用

Toon.equals("Anything")

让它工作。

编辑:

这是真的,因为“==”只会比较字符串的内存地址,而“Anything”只会被分配,绝对不会匹配 Toon。.equals 但是实际上比较了字符串中的字符。

还要测试这样的事情,尝试放入

Log.i("YourAppName", "Toon value is: " + Toon);

String Toon = extras.getString("key");
于 2013-02-18T15:08:16.750 回答
2

问题是 Java 101。字符串相等性测试是使用该equals方法完成的。

Toon.equals("archer");

额外提示:反转您的测试以避免空指针异常:

"archer".equals(Toon);

额外提示:考虑到您的案例是互斥的,请使用 if else if 以避免测试所有案例。

于 2013-02-18T15:08:37.903 回答
0

尝试使用SharedPreferences,在单击按钮之后/使用它进行设置,然后在 2. Activity 上获取它OnCreate

于 2013-02-18T15:04:15.720 回答
0

如果您只想传递一个简单的字符串,您可以使用以下内容:

发送时:

    Intent i = new Intent(SelectCharacterActivity.this, LevelOneActivity.class);
    i.putExtra("key", selection);
    startActivity(i);

收到时:

    String selection = getIntent().getStringExtra("key");

如果此键没有参数,则选择将为空。

于 2013-02-18T15:07:00.283 回答
0

试试这个

Intent i = new Intent(FirstActivity.this, SecondActivity.class); i.putExtra("email", "lol@hotmail.com"); startActivity(i);

Intent i = getIntent(); String myemail = i.getStringExtra("email");

此外,要比较字符串,请使用.equals()not==

于 2013-02-18T15:07:01.420 回答