如何在Android中使用SharedPreferences从PhotoView ID /图像ID获取价值

时间:2019-02-02 17:15:08

标签: java android

我正在创建一个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 是我想要在按下后退按钮或转到任何其他活动之后保存的变量,并且如果用户最小化该应用程序,我希望将其传递给main活动以显示简历活动的额外按钮,还可以显示用户单击简历活动按钮时按返回按钮之前用户所看到的确切图像。 我正在使用Chris Banes的photoview来显示图像。我知道如何在PHP中传递变量并编写它们,但是android对我来说是新的。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

SharedPreferences prefs = getSharedPreferences("nameOfSharedPreference", MODE_PRIVATE);
SharedPreferences.Editor editor = getSharedPreferences("nameOfSharedPreference", MODE_PRIVATE).edit();
editor.putInt("image", R.imageID).commit();

@Override
onBackPressed(){
    image = prefs.getInt("image", defaultValue)  //Default value is taken if the pref doesn't exist yet
}
按下电话后退按钮时,android将自动调用

onBackPressed()。您可以手动调用它: onBackPressed();

答案 1 :(得分:0)

我不能完全理解问题,但您可以这样写:

SharedPreferences prefs = getSharedPreferences("nameOFPref", MODE_PRIVATE);
private int currentPage = prefs.getInt("image", 1);

它的工作方式是将文件保存在“图像”部分的nameOfPref中,以便在程序启动时将其取回。在这里,我们将1作为默认值,因此第一次启动该程序时它将采用的值是1。您应该写:

SharedPreferences.Editor editor =    getSharedPreferences("nameOfSharedPreference", MODE_PRIVATE).edit();
editor.putInt("image", idOFImageCurrentlyVIewed).commit();

每次用户更改图像后,程序中都会出现。因此,它将更改首选项,并确保在启动程序时,currentImage将采用正确的值。 在android studio中,您可以查看仿真手机的文件系统。对于首选项,您需要进入Android / data / com.yourPackageName / preferences,如果一切正常,您应该在此处看到文件。