首页 > 解决方案 > 如何在 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 对我来说是新的。任何帮助,将不胜感激。

标签: javaandroid

解决方案


我不完全理解这个问题,但你可以写:

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 如果一切顺利,您应该在那里看到您的文件。


推荐阅读