重新单击 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 有一个 textViewbutton 称为“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 它。