gpt4 book ai didi

android - 为什么TextView只显示最后一个getIntent().getStringExtra()的内容?Android

转载 作者:行者123 更新时间:2023-11-29 23:56:31 24 4
gpt4 key购买 nike

我是 Android 编程的初学者,我正在尝试将字符串数据的段落从 MainActivity 发送到另一个名为 Info Activity 的 Activity 。

我搜索了在 Activity 之间一次发送多个字符串数据的 Intent 方式,但似乎我只能在一个 TextView (displayTxt) 上显示其中一个(最新的一个)

这是将 Intent 数据从 MainActiviy 发送到 Info Activity 的函数

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);
}
}
});
}

下面是我在信息 Activity 中的接收方法

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;
}

换句话说,是否有可能从一个 Activity 到另一个 Activity 以一个 Intent 接收不同的字符串数据,并仅在一个 TextView 上单独显示每个文本(比如新选择的项目的信息将覆盖之前选择的项目)?

最佳答案

No, I have 3 selections in a spinner, and each time a user can only choose one item, and this item would activate the correspondent intent String data transferring to info activity, and display the data onto ONE TextView

正确研究你的接收方法,你会发现没有任何方法应该起作用,你正在使用一个 for 循环,它在 i 为 2 时终止;文本将始终以 txtBox[2] 结束。

这是将您的值(value)观发送给另一方的更好方式:

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;
}

关于android - 为什么TextView只显示最后一个getIntent().getStringExtra()的内容?Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50321586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com