我想将字符串从 Activity 传递到其他 Activity 。 例如,告诉我有 5 个 Activity ,我从第二个到第三个到第四个到第五个得到一个文本,但是当我单击一个按钮转到第三个时,文本没有保存我通过时如何保存字符串是吗?
我尝试将我从第二个 Activity 中获得的文本传递给具有 Intent 的所有其他 Activity :
//While on MainActivity
Intent Second = new Intent(MainActivity.this, SecondActivity.class);
startActivity(Second);
//While on SecondActivity
Intent Third = new Intent(SecondActivity.this, ThirdActivity.class);
Third.putExtra("Third", String);
startActivity(Third);
//While on ThirdActivity
TextView String;
String = findViewByID(R.id.TextView1);
String.setText(string);
String string = getIntent().getStringExtra("Third");
Intent Forth = new Intent(ThirdActivity.this, ForthActivity.class);
Forth.putExtra("Forth", string);
startActivity(Forth);
然后我传递这样的字符串,直到 Activity 5 有一个按钮转到第三个并且 TextView 文本未保存
我希望当我从 Activity 5 单击按钮转到第三个 Activity 时,第三个 Activity 的 TextView 是我传递给它的第二个 Activity 的文本。
最佳答案
转发所有附加内容
您可以使用 putExtras(intent)“转发”所有额外内容:
Intent third = new Intent(this, ThirdActivity.class);
third.putExtras(getIntent());
third.putExtra("THIRD", myString);
这将在每一步都保持相同的键,因此如果您回溯( Activity 5 => Activity 3),您仍然可以提取该 Activity 的相关值。
奖励:使用常量来避免拼写错误
由于您的额外内容可能会在多个 Activity 中读取,因此我会在您流程的最后一个 Activity 中定义常量(我假设是摘要或确认 Activity ):
public class LastActivity extends AppCompatActivity {
public static final String EXTRA_NAME = "EXTRA_NAME"
public static final String EXTRA_EMAIL = "EXTRA_EMAIL"
public static final String EXTRA_BOOKING_ID = "EXTRA_BOOKING_ID"
// rest of class
}
那么当您putExtra
或getXxxExtra
时,您就不会冒拼写错误的风险:
String name = intent.getStringExtra(LastActivity.EXTRA_NAME);
关于java - 如何在多个 Activity 中传递字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57473367/