当前位置: 首页 > 知识库问答 >
问题:

共享偏好

楚煜
2023-03-14

我有一个这样的旋转器:

// Spinner 1


final Spinner plan = (Spinner) dialog.findViewById(R.id.spinner1);
strings = getResources().getStringArray(R.array.paymentplan);
sAdapter = new SpinnerAdapter(this,
        android.R.layout.simple_spinner_item, strings);
sAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
plan.setAdapter(sAdapter);

// plan.setAdapter(spinner1Adapter);
plan.setSelection(prefsDisplay.getInt("spinnerSelection1", 0));
plan.setOnItemSelectedListener(new MyOnItemSelectedListenerPlan());

当用户点击时,我希望它保存状态:

  public void onClick(View v) {
                Editor editor2 = prefsPlan.edit();
                int selectedPosition1 = plan.getSelectedItemPosition();
                editor2.putInt("spinnerSelection1", selectedPosition1);
                editor2.commit();


}

它将位置保存在SharedPref中,但微调器将返回默认值。有人看到什么了吗?

共有3个答案

魏泰
2023-03-14
匿名用户

尝试下面的代码,首先使用下面的代码将当前选定项目的位置保存到< code > onItemSelectedListener()上的一个整数变量中,然后将该变量值保存到共享首选项中。

用于将值存储到一个变量中。

int index;

public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    // Here Position is Item Index
    index = position;
}

将存储值转换为共享首选项。

SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putInt("SelectedIndex", index);
prefsEditor.commit();

并查看以下链接了解更多信息

Android旋转器

Android共享偏好设置

阎建华
2023-03-14

保存:

int selectedPosition = yourSpinner.getSelectedItemPosition()
editor.putInt("spinnerSelection", selectedPosition);
editor.commit();

加载:

 yourSpinner.setSelection(prefs.getInt("spinnerSelection",0));

如果你使用的是数组,它应该像这样改变

String selectedString = yourArray[yourSpinner.getSelectedItemPosition()];
editor.putString("spinnerSelection", selectedString);
editor.commit();

根据 prefs 中存储的值检查 array[i]。如果您使用 ArrayList 代替此部分,则可以通过调用

ArrayList.indexOf(prefs.getString("spinnerSelection", "");

当你提交时,显示上面所有的数组项目都消失了。显示没有人进入数组

贲高寒
2023-03-14

您正在存储< code>spinnerSelection

editor1.putInt("spinnerSelection", selectedPosition);

正在访问的喷丝头选择1

prefsDisplay.getInt("spinnerSelection1", 0)

使它们一致。

使现代化

当您访问plan.getSelectedItemPosition()时。那么微调器是可见的吗?我想没有。

尝试为所选位置放置公共变量。并更新MyOnItemSelectedListenerPlan中的选定位置。然后将该位置存储在共享首选项中。我想这能解决你的问题。

 类似资料:
  • 当单元测试共享首选项时,值是否为get refresh every test?

  • 经过大量研究,我最终决定在这里发布以下问题。对于大学项目,我想通过SharedReferences保存我的应用程序设置。然而,无论我做什么,它都不起作用。 对于一个简单的测试,我尝试在我的主要活动的oncreate方法中编写一些testdata,如下所示: 当我在调试模式下检查prefs对象时,它会向我显示应该创建文件的路径:/data/user/0//共享优先/测试。xml 然而,当我在手机上导

  • 我正在尝试在Mac上运行iOS上的Flutter应用程序。当我试图构建项目时,它给我这个错误: Xcode的输出:↳ ===使用配置Debug ===在/Users/(username)/包含的文件中构建项目Pods的目标shared_preferences。pub-cache/hosted/pub . dartlang . org/shared _ preferences-0 . 2 . 4/I

  • 我试图在kotlin中的两个活动之间传递一个值,但如果我使用下面的代码,那么我只得到“Hello World”默认值,而不是PREFERENCE_NAME值。我的文本ID名称是android: id="@id/tv_count"感谢任何帮助。

  • 库用于将相似函数打包在一个单元中。然后这些单元就可为其他开发人员所共享,并因此有了模块化编程这种说法— 即,从模块中构建程序。Linux支持两种类型的库,每一种库都有各自的优缺点。静态库包含在编译时静态绑定到一个程序的函数。动态库则不同,它是在加载应用程序时被加载的,而且它与应用程序是在运行时绑定的。 使用共享库的方法有两种:您既可以在运行时动态链接库,也可以动态加载库并在程序控制之下使用它们。本

  • 共享内存是两个或多个进程共享的内存。 但是,为什么我们需要共享内存或其他通信方式呢? 重申一下,每个进程都有自己的地址空间,如果任何进程想要将自己的地址空间的某些信息与其他进程进行通信,那么只能通过IPC(进程间通信)技术进行。 我们已经知道,通信可以在相关或不相关的进程之间进行。 通常,使用管道或命名管道来执行相互关联的进程通信。 可以使用命名管道或通过共享内存和消息队列的常用IPC技术执行无关