跨活动传递字符串值?

时间:2013-02-18 15:01:58

标签: android

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

这就是我在第一次活动中所拥有的:

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);
    }
}     

我知道receive if语句部分有效,因为如果我手动设置值Toon,图像将加载。所以某些地方的信息没有被正确发送或读取。我在线阅读了一个教程,但我对此感到难过。

5 个答案:

答案 0 :(得分:2)

您正在比较错误的字符串,

Toon=="Anything"

永远不会成真,你需要使用

Toon.equals("Anything")

让它发挥作用。

编辑:

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

另外要测试这样的东西,试试放入

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

String Toon = extras.getString("key");

答案 1 :(得分:2)

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

Toon.equals("archer");

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

"archer".equals(Toon);

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

答案 2 :(得分:0)

尝试使用SharedPreferences,在点击按钮后设置它并将其设置为2.活动OnCreate

答案 3 :(得分:0)

如果您只想传递一个简单的String,可以使用以下命令:

发送时:

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

收到:

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

如果此键没有参数,则selection将为null。

答案 4 :(得分: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()而不是==