我目前正在尝试跨活动传递字符串。该字符串用于在第二个活动中设置图像。因此,用户单击第一个活动中的按钮,然后根据所选内容在第二个活动中加载相应的图像。第一个活动中有三个按钮,它们应该将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,图像将加载。所以某些地方的信息没有被正确发送或读取。我在线阅读了一个教程,但我对此感到难过。
答案 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()
而不是==