在活动之间传递两个字符串,但两个字段都是相同的

时间:2016-06-21 09:50:23

标签: android android-intent android-activity

到目前为止,我已经将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]

        }

1 个答案:

答案 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");