1

我想将字符串从活动传递到其他活动。例如,告诉我有 5 个活动我从第二个到第三个到第四个到第五个得到一个文本,但是当我单击一个按钮转到第三个时,文本没有保存当我通过时如何保存字符串它?

我尝试通过 Intent 将我从第二个活动中获得的文本传递给所有其他人:

 //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 文本没有保存

我希望当我单击活动 5 中转到第三个活动的按钮时,第三个活动上的文本视图将成为我传递的第二个活动的文本。

4

1 回答 1

1

转发所有附加内容

您可以使用putExtras(intent) “转发”所有额外内容:

Intent third = new Intent(this, ThirdActivity.class);
third.putExtras(getIntent());
third.putExtra("THIRD", myString);

这将在每一步都保持相同的键,因此如果您回溯(活动 5 => 活动 3),您仍然可以提取该活动的相关值。

奖励:使用常量来避免拼写错误

由于您的附加内容可能会在多个活动中被读取,因此我将在您的流程中的最终活动中定义常量(我假设一个摘要或确认活动):

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);
于 2019-08-13T07:59:00.053 回答