如何将数据从两个不同的活动传递到另一个
How to pass data from two different activities to another
我有三个不同的 类,当单击 class1 中的 ImageButton
时,我希望 class3 中的 TextView
应更改为“50”。另一方面,当单击 class2 中的 ImageButton
时,我希望 class3 中的 TextView 应更改为“0”。
class1:
ImageButton button1 = (ImageButton) this.findViewById(R.id.imageButton);
if (button1 != null) {
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent passdata_intent1 = new Intent(class1.this, class3.class);
String data1 = "50";
Bundle bundle1 = new Bundle();
bundle1.putString("firstdata", data1);
passdata_intent1.putExtras(bundle1);
startActivity(passdata_intent1);
}
});
}
class2:
ImageButton button1 = (ImageButton) this.findViewById(R.id.imageButton);
if (button1 != null) {
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent passdata_intent2 = new Intent(class2.this, class3.class);
String data2 = "0";
Bundle bundle2 = new Bundle();
bundle2.putString("seconddata", data2);
passdata_intent2.putExtras(bundle2);
startActivity(passdata_intent2);
}
});
}
class3:
TextView score = (TextView) findViewById(R.id.textViewscore);
Bundle bundle1 = getIntent().getExtras();
String data_1 = bundle1.getString("firstdata");
score.setText(data_1);
Bundle bundle2 = getIntent().getExtras();
String data_2 = bundle2.getString("seconddata");
score.setText(data_2);
所以我的问题是,当我启动应用程序并单击 class2 中的 ImageButton
时,class3 中的 TextView
发生了变化。但是当我单击 class1 中的 ImageButton
时,class3 中没有任何变化。
您在这两种情况下都覆盖了分数值。如果其他逻辑将正常工作。
if(getIntent().hasExtras("firsdata")){
Bundle bundle1 = getIntent().getExtras();
String data_1 = bundle1.getString("firstdata");
score.setText(data_1);
} else{
Bundle bundle2 = getIntent().getExtras();
String data_2 = bundle2.getString("seconddata");
score.setText(data_2);
}
从代码片段中我看到问题似乎是您首先在意图中检查 "firstdata" extra 将其设置为文本视图,然后检查 "seconddata" extra 并覆盖文本视图中的值。
当您将第一个数据传递给 activity 时,第二个数据(如果未传递)应该为空,因此您将分数文本设置为空并从中删除第一个数据值。
不需要为额外的用户使用 2 个不同的名称,以便将数据从 2 个不同的入口点传递到同一个文本视图。
为 class1 和 class2 使用 "firstdata" 额外名称来传递数据,它应该可以工作。
我有三个不同的 类,当单击 class1 中的 ImageButton
时,我希望 class3 中的 TextView
应更改为“50”。另一方面,当单击 class2 中的 ImageButton
时,我希望 class3 中的 TextView 应更改为“0”。
class1:
ImageButton button1 = (ImageButton) this.findViewById(R.id.imageButton);
if (button1 != null) {
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent passdata_intent1 = new Intent(class1.this, class3.class);
String data1 = "50";
Bundle bundle1 = new Bundle();
bundle1.putString("firstdata", data1);
passdata_intent1.putExtras(bundle1);
startActivity(passdata_intent1);
}
});
}
class2:
ImageButton button1 = (ImageButton) this.findViewById(R.id.imageButton);
if (button1 != null) {
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent passdata_intent2 = new Intent(class2.this, class3.class);
String data2 = "0";
Bundle bundle2 = new Bundle();
bundle2.putString("seconddata", data2);
passdata_intent2.putExtras(bundle2);
startActivity(passdata_intent2);
}
});
}
class3:
TextView score = (TextView) findViewById(R.id.textViewscore);
Bundle bundle1 = getIntent().getExtras();
String data_1 = bundle1.getString("firstdata");
score.setText(data_1);
Bundle bundle2 = getIntent().getExtras();
String data_2 = bundle2.getString("seconddata");
score.setText(data_2);
所以我的问题是,当我启动应用程序并单击 class2 中的 ImageButton
时,class3 中的 TextView
发生了变化。但是当我单击 class1 中的 ImageButton
时,class3 中没有任何变化。
您在这两种情况下都覆盖了分数值。如果其他逻辑将正常工作。
if(getIntent().hasExtras("firsdata")){
Bundle bundle1 = getIntent().getExtras();
String data_1 = bundle1.getString("firstdata");
score.setText(data_1);
} else{
Bundle bundle2 = getIntent().getExtras();
String data_2 = bundle2.getString("seconddata");
score.setText(data_2);
}
从代码片段中我看到问题似乎是您首先在意图中检查 "firstdata" extra 将其设置为文本视图,然后检查 "seconddata" extra 并覆盖文本视图中的值。
当您将第一个数据传递给 activity 时,第二个数据(如果未传递)应该为空,因此您将分数文本设置为空并从中删除第一个数据值。
不需要为额外的用户使用 2 个不同的名称,以便将数据从 2 个不同的入口点传递到同一个文本视图。 为 class1 和 class2 使用 "firstdata" 额外名称来传递数据,它应该可以工作。