在android studio

时间:2016-11-12 23:09:42

标签: android android-studio sharedpreferences

我想知道如何在图像视图中保存和显示图像。

我的应用程序有2个按钮,根据按下的按钮,图像视图获取图像。我想要做的是保存该图像,当我再次打开应用程序时,选择的图像仍然存在。

我知道保存某些东西的唯一方法是共享首选项,但在这种情况下它不起作用。

有人可以帮我吗?感谢

这是我的代码:

public class MainActivity extends AppCompatActivity {

ImageView imagen;
Button boton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imagen = (ImageView) findViewById(R.id.imagen);
    boton = (Button) findViewById(R.id.boton);

    SharedPreferences preferences= getSharedPreferences("Preferencias", MODE_PRIVATE);
    String imagen= preferences.getString("Imagen", null);
}

public void boton1(View view){

    imagen.setImageResource(R.drawable.imagen1);

    SharedPreferences preferences = getSharedPreferences("Preferencias", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("Imagen", imagen.getResources().toString());
    editor.apply();
}

public void boton2(View view){

    imagen.setImageResource(R.drawable.imagen2);

    SharedPreferences preferences = getSharedPreferences("Preferencias", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("Imagen", imagen.getResources().toString());
    editor.apply();
}

}

1 个答案:

答案 0 :(得分:0)

您可以在共享首选项中以可绘制的String格式保存URI。像这样(用可绘制的名称重命名yourImageName):

Uri imageUri = Uri.parse("android.resource://"+context.getPackageName()+"/drawable/yourImageName");
String uri_toString = imageUri.toString();  

SharedPreferences preferences = getSharedPreferences("Preferencias", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("imageUri", uri_toString);
editor.apply();

在您的MainActivity中,在onResume中设置ImageView的图像源,如下所示:

SharedPreferences preferences = getSharedPreferences("Preferencias", Context.MODE_PRIVATE);
String imageUri = preferences.getString("imageUri",null);

if (imageUri != null) {
   Uri uri = Uri.parse(imageUri);
   yourImageView.setImageURI(uri);
}