有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在安卓中使用SharedReferences从PhotoView id/图像id获取值

我正在创建一个安卓应用程序,我正在根据编号显示drawable文件夹中的图像,我的活动开始显示数字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 activity,以便显示resume activity的额外按钮,并显示用户在单击resume activity按钮时按下back按钮之前看到的确切图像。 我正在使用克里斯·贝恩斯的照片视图来显示图像。我知道如何在PHP中传递变量和设置它们,但是安卓对我来说是新的。任何帮助都将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    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
    }
    

    安卓在按下手机后退按钮时会自动调用onBackPressed()。您可以手动调用它: onBackPressed()

  2. # 2 楼答案

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

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

    它的工作方式是在“图像”部分以文件名保存一个文件,以便在程序启动时将其取回。在这里,我们把1作为默认值,所以当你第一次启动程序时,它将取1。你应该写:

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

    以后在程序中每次用户更改图像时。因此,它将更改首选项,并确保当您启动程序时,currentImage将采用正确的值。 在android studio中,您可以查看模拟手机的文件系统。对于首选项,您需要进入Android/data/com。你的PackageName/首选项,如果一切顺利,你应该在那里看到你的文件