到目前为止,我已经将1个字符串发送到我的下一个活动,并且它一直正常工作,但是当我尝试添加第二个字符串来添加时,我总是会错过我传递的字符串之一。我错过了一些明显的东西吗当我切换最后一个额外发送时,这是两个接收字符串显示为的值。
示例:
活动2中的两个值仅等于从活动1发送的值中的一个(活动1中的最后一个发送值)。 活动1发送: string1_send =" str1" string2_send =" str2"
活动2收到: string1_rcv,期待" str1",但接收" str2"。 string2_rcv,期待" str2"和接收" str2"
活性1:
public void newGame (View view1)
{
Intent intent1 = new Intent(this, gameScreen.class);
if(musicEnable == true){
intent1.putExtra(musicEnablePass, "music_ON");
intent1.putExtra(aviMF_choice, aviSelected);
}
else{
intent1.putExtra(musicEnablePass, "music_OFF");
intent1.putExtra(aviMF_choice, aviSelected);
}
startActivity(intent1);
} //aviSelected is a string "male"
活动2(在我的onCreate中):
Bundle extras = getIntent().getExtras();
if (extras != null) {
aviChoice = extras.getString(aviMF_choice);
Log.i("test", ""+musicEnabled_Pass +" , "+aviChoice); // returns "null, null"
musicEnabled_Pass = extras.getString(musicEnablePass);
Log.i("test", ""+musicEnabled_Pass +" , "+aviChoice); // returns [aviMF_choice value],[aviMF_choice value]
}
答案 0 :(得分:1)
将密钥从变量更改为简单字符串。目前,您的“Activity2”只接收一个字符串并将其分配两次,因为您的密钥未被“识别”为两个不同的唯一键,因为您没有像这样分配它们。它起作用的原因是因为你有效地发送数据所以在Activity 2中它确实看到“extras!= null”但它只提供默认值(可能是它知道的唯一键:最后发送的)。除非您已经为每个相应的键分配了唯一的字符串 示例“musicEnablePass”可能只是一个空变量,
String musicEnablePass; // this returns a null value/string
VS
String musicEnablePass = "musicEnablePass";
所以改变(你的代码):
Activity1.java
intent1.putExtra(musicEnablePass, "music_ON");
intent1.putExtra(aviMF_choice, aviSelected);
活动2.java
aviChoice = extras.getString(aviMF_choice);
Log.i("test", ""+musicEnabled_Pass +" , "+aviChoice); // returns "null, null"
musicEnabled_Pass = extras.getString(musicEnablePass);
对此(更正后的代码): Activity1.java
intent1.putExtra("musicEnablePass", "music_ON");
intent1.putExtra("aviMF_choice", aviSelected);
活动2.java
aviChoice = extras.getString("aviMF_choice");
Log.i("test", ""+musicEnabled_Pass +" , "+aviChoice); // returns "null, null"
musicEnabled_Pass = extras.getString("musicEnablePass");