До сих пор я отправлял 1 строку в свое следующее действие, и она работала нормально, но когда я пытался добавить вторую строку, я всегда пропускал одну из моих переданных строк. Я упускаю что-то очевидное? Когда я переключаю последнюю отправленную дополнительную строку, это значение, которое отображаются в обеих полученных строках.
Пример:
Оба значения в действии 2 равны только 1 из значений, отправленных из действия 1 (последнее отправленное значение из действия 1). Действие 1 отправляет: string1_send = "str1" string2_send = "str2"
Действие 2 получает: string1_rcv, ожидая "str1", но получая "str2". string2_rcv, ожидая "str2" и получая "str2"
Activity1:
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"
Activity2 (в моем 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]
}
Измените свои ключи с переменных на простые строки. В настоящее время ваша «Activity2» получает только одну строку и назначает ее дважды, потому что ваши ключи не «распознаются» как два разных уникальных ключа, поскольку вы не назначили их как таковые. Причина, по которой он вообще работает, заключается в том, что вы эффективно отправляете данные, поэтому в действии 2 он действительно видит, что «extras! = Null», но предоставляет только значение по умолчанию (вероятно, единственный ключ, о котором он знает: последний отправленный). Если вы уже не присвоили уникальные строки каждому соответствующему ключу. Пример, ваш "musicEnablePass" может быть просто нулевой переменной,
String musicEnablePass; // this returns a null value/string
против
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");
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения