У меня есть активность, которая снимает фотографии из вашей галереи и помещает их на экран, но когда я выхожу из приложения и вернусь, они не останутся там сохраненными. Как я могу сохранить их в активности, когда я выйду и вернусь? Пробовал с onSavedInstanceState, но я не понял, что я делаю больше. Я немного новичок в этом. Вот моя активность:Сохранение состояния активности с фотографиями, загруженными с телефона?
public class HatActivity extends Activity {
private static final int RESULT_LOAD_IMAGE = 1;
LinearLayout main;
Bitmap b;
int count = 0;
@Override
public void onSaveInstanceState(Bundle toSave) {
super.onSaveInstanceState(toSave);
toSave.putParcelable("bitmap", b);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) b = savedInstanceState.getParcelable("bitmap");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hat);
main = (LinearLayout) findViewById(R.id.main);
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getActionBar().setCustomView(R.layout.actionbar);
getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.abc_textfield_search_right_default_holo_light));
getActionBar().setStackedBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.abc_search_url_text_normal)));
}
public void infoClick(View view) {
Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
final ImageView iv = new ImageView(this);
lparams.gravity=0x11;
lparams.topMargin=60;
lparams.bottomMargin=30;
count++;
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 4;
b = BitmapFactory.decodeFile(picturePath, options);
iv.setImageBitmap(Bitmap.createScaledBitmap(b, 480, 460, false));
main.addView(iv, count, lparams);
}
}
}
Как я могу сбежать к путям? Вы можете показать мне? – Dennis
см., Где вы сохраняете путь здесь String picturePath = cursor.getString (columnIndex); сберечь эту строку вместо toSave.putParcelable («bitmap», b); savestate коротка для onSaveInstanceState – Rick
Ok я пытался что-то вроде этого: @Override общественного недействительными onSaveInstanceState (Bundle savedInstanceState) { savedInstanceState.putString ("ImagePath", picturePath); super.onSaveInstanceState (savedInstanceState); } и если (savedInstanceState! = NULL) {// Восстановить значения членов из сохраненного состояния picturePath = savedInstanceState.getString ("ImagePath"); } Но он не работает. Что мне не хватает? – Dennis