重新单击 MainActivity 中的按钮以启动第二个 activity 后,如何在第二个 activity 中保留值?
How to retain value in second activity after re-clicking the button from MainActivity to launch the second activity?
我有 2 个活动。第一个是 MainActivity
,第二个是 SecondActivity
.
MainActivity
有一个 textView
和 button
称为“Launch”。使用 intent
和 startActivityForResult 我将列表传递给 SecondActivity
.
SecondActivity
有一个 spinner
和 2 个 buttons
;一个 select button
和一个 cancel
按钮。
在 spinner
中的项目的 selection 上,当用户单击 Select
按钮时,spinner
中选择的选项将填充到 [= MainActivity
的 15=]。
现在,当用户再次单击“启动”时,SecondActivity
将启动,但是,spinner
不保留用户上次选择的值,而是显示第一个值spinner
.
无论如何,我如何才能保留用户在之前使用时选择的 SecondActivity
中的 selected 值。
您可以使用 SharedPreferences 保存信息,只需存储用户的最后选择,然后检索它以在 SecondActivity 上设置。
Context context = getActivity();
SharedPreferences prefs = context.getSharedPreferences(
getString("myPreferences"), Context.MODE_PRIVATE);
//Store a value
SharedPreferences.Editor editor = prefs.edit();
editor.putString("selection","foo");
//Get the value
String selection = prefs.getString("selection", "defaultOption");
官方文档如下:https://developer.android.com/training/data-storage/shared-preferences
当你关闭SecondActivity时,你应该return spinner的select项到MainActivity。如果是 MainActiviy 可以在这个函数中得到那个值:
onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
在此之前,你应该用
显示SecondActivity
startActivityForResult(intent, SECOND_CODE);
所以代码可以这样
private static SECOND_CODE = 1001;
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, SECOND_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SECOND_CODE && resultCode ==
Activity.RESULT_OK && data != null) {
// you can get selected spinner item here
}
}
之后,当你想再次显示SecondActivity时
Intent intent = new Intent(MainActivity.thisSecondActivity.class);
intent.putExtra("selected_spinner", /*the spinner item you got from above function*/)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, SECOND_CODE);
并且在 SecondActivity 中,您可以从 getIntent()
获取 selected 微调项
String selected_spinner = getIntent().getStringExtra("selected_spinner");
然后你可以在 Spinner 中找到这个字符串 select 它。
我有 2 个活动。第一个是 MainActivity
,第二个是 SecondActivity
.
MainActivity
有一个 textView
和 button
称为“Launch”。使用 intent
和 startActivityForResult 我将列表传递给 SecondActivity
.
SecondActivity
有一个 spinner
和 2 个 buttons
;一个 select button
和一个 cancel
按钮。
在 spinner
中的项目的 selection 上,当用户单击 Select
按钮时,spinner
中选择的选项将填充到 [= MainActivity
的 15=]。
现在,当用户再次单击“启动”时,SecondActivity
将启动,但是,spinner
不保留用户上次选择的值,而是显示第一个值spinner
.
无论如何,我如何才能保留用户在之前使用时选择的 SecondActivity
中的 selected 值。
您可以使用 SharedPreferences 保存信息,只需存储用户的最后选择,然后检索它以在 SecondActivity 上设置。
Context context = getActivity();
SharedPreferences prefs = context.getSharedPreferences(
getString("myPreferences"), Context.MODE_PRIVATE);
//Store a value
SharedPreferences.Editor editor = prefs.edit();
editor.putString("selection","foo");
//Get the value
String selection = prefs.getString("selection", "defaultOption");
官方文档如下:https://developer.android.com/training/data-storage/shared-preferences
当你关闭SecondActivity时,你应该return spinner的select项到MainActivity。如果是 MainActiviy 可以在这个函数中得到那个值:
onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
在此之前,你应该用
显示SecondActivity startActivityForResult(intent, SECOND_CODE);
所以代码可以这样
private static SECOND_CODE = 1001;
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, SECOND_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SECOND_CODE && resultCode ==
Activity.RESULT_OK && data != null) {
// you can get selected spinner item here
}
}
之后,当你想再次显示SecondActivity时
Intent intent = new Intent(MainActivity.thisSecondActivity.class);
intent.putExtra("selected_spinner", /*the spinner item you got from above function*/)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, SECOND_CODE);
并且在 SecondActivity 中,您可以从 getIntent()
获取 selected 微调项 String selected_spinner = getIntent().getStringExtra("selected_spinner");
然后你可以在 Spinner 中找到这个字符串 select 它。