2013-12-05 3 views
0

У меня есть активность, которая снимает фотографии из вашей галереи и помещает их на экран, но когда я выхожу из приложения и вернусь, они не останутся там сохраненными. Как я могу сохранить их в активности, когда я выйду и вернусь? Пробовал с 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); 
    } 
} 

}

ответ

0

Похоже, ваша загрузка изображения затем Тринг savestate изображения.

Вам необходимо сэкономить пути, а затем загрузить изображения. Если вы не собираетесь копировать изображения в файл (галерею) вашего создания. Что плохо, на мой взгляд, из-за пространства, которое будет использоваться.

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    // Save the user's current game state 
    savedInstanceState.putInt(STATE_SCORE, mCurrentScore); 
    savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel); 

    // Always call the superclass so it can save the view hierarchy state 
    super.onSaveInstanceState(savedInstanceState); 
} 

public void onRestoreInstanceState(Bundle savedInstanceState) { 
    // Always call the superclass so it can restore the view hierarchy 
    super.onRestoreInstanceState(savedInstanceState); 

    // Restore state members from saved instance 
    mCurrentScore = savedInstanceState.getInt(STATE_SCORE); 
    mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL); 
} 
+0

Как я могу сбежать к путям? Вы можете показать мне? – Dennis

+0

см., Где вы сохраняете путь здесь String picturePath = cursor.getString (columnIndex); сберечь эту строку вместо toSave.putParcelable («bitmap», b); savestate коротка для onSaveInstanceState – Rick

+0

Ok я пытался что-то вроде этого: @Override общественного недействительными onSaveInstanceState (Bundle savedInstanceState) { savedInstanceState.putString ("ImagePath", picturePath); super.onSaveInstanceState (savedInstanceState); } и если (savedInstanceState! = NULL) {// Восстановить значения членов из сохраненного состояния picturePath = savedInstanceState.getString ("ImagePath"); } Но он не работает. Что мне не хватает? – Dennis

 Смежные вопросы

  • Нет связанных вопросов^_^