为什么TextView只显示最后一个getIntent()。getStringExtra()内容?Android

时间:2018-05-13 23:42:02

标签: android

我是Android编程的初学者,我正在尝试将MainActivity的String数据段发送到另一个名为Info activity的活动。

我搜索了意图的方法,在活动之间一次发送多个String数据,但似乎我只能在一个TextView(displayTxt)上显示一个(最新的)

以下是将MainActiviy中的Intent数据发送到Info活动

的功能

selectedItem()返回微调器输入的int值

protected void setGoBtn(){
    //Texts
    rabitSyno=getString(R.string.rabit_syno);
    lifeSyno=getString(R.string.life_syno);
    poolSyno=getString(R.string.pool_syno);

    goBtn=(Button)findViewById(R.id.goBtn);
    goBtn.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            Intent intent=new Intent(v.getContext(),Info.class);

            //send data to second activity
            if(selectedItem()==1){
                intent.putExtra("rabit_syno",rabitSyno);

                startActivity(intent.putExtra("rabit_syno",rabitSyno));
            }else if(selectedItem()==2){
                intent.putExtra("life_syno",lifeSyno);

                startActivity(intent);
            }else if(selectedItem()==3){

                intent.putExtra("pool_syno",poolSyno);

                startActivity(intent);
            }
        }
    });
}

以下是我在信息活动中的接收方法

private int getTxt(){
    txt=getIntent().getStringExtra("rabit_syno");
    txt1=getIntent().getStringExtra("life_syno");
    txt2=getIntent().getStringExtra("pool_syno");
    String[] txtBox={txt,txt1,txt2};
    int i;
    //To get each movie's texts
    for(i=0;i<3;i++){
        if(i==0){
            displayTxt.setText(txtBox[0]);
        }else if(i==1){
            displayTxt.setText(txtBox[1]);
        }else if(i==2){
            displayTxt.setText(txtBox[2]);
            //the textView(displayTxt) only displays the txtBox[2] content
        }
    }
    return i;
}

换句话说,是否可以通过一个意图接收不同的字符串数据来自一个活动另一个活动和显示每个文本单独显示(如新选择的项目的信息将覆盖之前选择的一个)仅在一个TextView上?

1 个答案:

答案 0 :(得分:1)

  

不,我在微调器中有3个选项,每次只有用户   选择一个项目,此项目将激活相应的意图   字符串数据传输到info活动,并显示数据   ONE TextView

正确研究你的接收方法,你发现没有办法可行,你使用的是for循环,当我是2时终止;文本总是最终成为txtBox[2]

这是将您的价值发送到另一方的更好方法:

goBtn.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        Intent intent=new Intent(v.getContext(),Info.class);

        String chosenItem = "";
        int position = 0;

        if(selectedItem()==1){
            chosenItem = rabitSyno;
            position = 0;
        }

        else if(selectedItem()==2){
            chosenItem = lifeSyno;
            position = 1;
        }

        else if(selectedItem()==3){
            chosenItem = poolSyno;
            position = 2;
        }

        Bundle bundle = new Bundle();
        bundle.putString("USERCHOICE", chosenItem);
        bundle.putInt("VALUE", position);

        startActivity(intent.putExtras(bundle));
    }
});

您的接收方式可以这样:

private int getTxt(){
    String txt=getIntent().getStringExtra("USERCHOICE");
    displayTxt.setText(txt); //text has been set at this stage

    int i = getIntent().getIntExtra("VALUE");
    return i;
    }