java - 如何在 android 中使用 SharedPreferences 从 PhotoView id/image id 中获取价值
问题描述
我正在创建一个 android 应用程序,我正在根据编号显示可绘制文件夹中的图像,我的活动开始显示编号 1 的图像,并且我正在使用按钮显示下一张或上一张图像。
我正在尝试保存使用共享首选项按下后退按钮时用户正在查看的图像的值。我的代码看起来像这样
private int currentPage = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_read);
final Button btnNext = findViewById(R.id.btnNext);
final Button btnBack = findViewById(R.id.btnBack);
listOfObjects = getResources().getStringArray(R.array.object_array);
images = getResources().obtainTypedArray(R.array.object_image);
itemImage = (ImageView)findViewById(R.id.imgSpace);
final Spinner spinner = (Spinner)findViewById(R.id.spinner);
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,R.layout.my_spinner, listOfObjects);;
spinnerAdapter.setDropDownViewResource(R.layout.my_spinner);
spinner.setAdapter(spinnerAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
itemImage.setImageResource(images.getResourceId(spinner.getSelectedItemPosition(), -1));
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
final ImageView img = findViewById(R.id.imgSpace);
PhotoView photoView = (PhotoView) findViewById(R.id.imgSpace);
img.setImageResource(getResources().getIdentifier("page_"+currentPage,"drawable",getPackageName()));
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(spinner.getSelectedItemPosition() < spinner.getAdapter().getCount()){
spinner.setSelection(spinner.getSelectedItemPosition()+1);
}
}
} );
}
currentPage是我想在按下后退按钮或转到任何其他活动后保存的变量,如果用户最小化应用程序,我想将它传递给主活动以显示恢复活动的额外按钮并显示当用户单击恢复活动按钮时,用户在按下后退按钮之前看到的确切图像。我正在使用 Chris Banes 的照片视图来显示图像。我知道如何在 PHP 中传递变量和等,但是 android 对我来说是新的。任何帮助,将不胜感激。
解决方案
我不完全理解这个问题,但你可以写:
SharedPreferences prefs = getSharedPreferences("nameOFPref", MODE_PRIVATE);
private int currentPage = prefs.getInt("image", 1);
它的工作方式是在“image”部分的 nameOfPref 中保存一个文件,以便在程序启动时将其取回。在这里,我们将 1 作为默认值,因此在您第一次启动程序时将采用 1。你应该写:
SharedPreferences.Editor editor = getSharedPreferences("nameOfSharedPreference", MODE_PRIVATE).edit();
editor.putInt("image", idOFImageCurrentlyVIewed).commit();
以后在程序中每次用户更改图像时。因此,它将更改首选项,并确保在您启动程序时返回 currentImage 将采用正确的值。在 android studio 中,您可以查看模拟手机的文件系统。对于首选项,您需要进入 Android/data/com.yourPackageName/preferences 如果一切顺利,您应该在那里看到您的文件。
推荐阅读
- r - ggplot中带有圆圈而不是瓷砖的热图
- java - 如何将 TXT 文件写入“/storage/emulated/0/myapp/myfile.txt”,以便稍后从文件浏览器打开它们?
- python - 为指数分布创建对数似然函数?
- go - GoTa 系列显示 NaN,但调试器显示值
- amazon-cloudformation - 如何生成 YAML 格式的 Canformation 模板?
- php - 在 PHP 中使用接口有什么好处,它的真正用途在哪里?
- microservices - 理想的速率限制行为
- android - AdMob 广告检查器无法在 Android 10 设备上启动
- android - Android自动备份不适用于三星手机
- android - 在 API 级别 30 之后,您的应用程序中还能以某种方式使用 toast 吗?