2014-02-13 2 views
0

Как можно создать изображение, выбранное из галереи. Он загружается нормально, но когда я выхожу из приложения, он больше не появляется. Я попытался использовать sharedpreferences, выполнив мой код для сохранения текста, и это получилось: Очевидно, что код, который я использовал для текста, не работает для изображений, я не знаю. П. я новичок. . Спасибо заранееКак сохранить фотографию в приложении?

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import android.media.MediaPlayer; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.app.Activity; 
import android.content.ContextWrapper; 
import android.content.Intent; 
import android.database.Cursor; 
import android.graphics.BitmapFactory; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 


public class Main extends Activity { 


    private ContextWrapper context; 
    private int imagebufferlength; 
    private byte[] imagebuffer; 

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


     Button buttonLoadImage = (Button) findViewById(R.id.buttonLoadPicture); 
     buttonLoadImage.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

       Intent i = new Intent(
         Intent.ACTION_PICK, 
         android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

       startActivityForResult(i, RESULT_LOAD_IMAGE); 
      } 
     });; 

Вот ваш код вы сказали мне, чтобы положить в мне пришлось сделать много chnages, как я сказал revove ошибки:

File cacheDir = context.getCacheDir(); 
     File imageFile = new File(cacheDir, "image1.jpg"); 
     FileOutputStream out = null; 
     try { 
      out = new FileOutputStream(imageFile); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     try { 
      out.write(imagebuffer, 0, imagebufferlength); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 



      Button week1 = (Button) findViewById(R.id.week1button); 
      Button week2 = (Button) findViewById(R.id.week2button); 
     //Button Sound 
     final MediaPlayer buttonSound = MediaPlayer.create(Main.this, R.raw.sound1); 


     week1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       buttonSound.start(); 
       startActivity(new Intent("com.example.timetable.WEEK1")); 
      }}); 

       week2.setOnClickListener(new View.OnClickListener(){ 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 
         buttonSound.start(); 
         startActivity(new Intent("com.example.timetable.WEEK2")); 
        } 
     });  

      }; 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 




private static int RESULT_LOAD_IMAGE = 1; 

    @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(); 

      ImageView imageView = (ImageView) findViewById(R.id.imageView1); 
      imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 

     } 


    } 
} 

** Однако, если я ставлю его здесь, это заставляет меня сделать это, и я получаю два эрроса, которые я не могу использовать самостоятельно: *

public class Main extends Activity { 

private ContextWrapper context; 
File cacheDir = context.getCacheDir(); 
File imageFile = new File(cacheDir, "image1.jpg"); 
FileOutputStream out = new FileOutputStream(imageFile); 
out.write(imagebuffer, 0, imagebufferlength); 

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


    Button buttonLoadImage = (Button) findViewById(R.id.buttonLoadPicture); 
    buttonLoadImage.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent i = new Intent(
        Intent.ACTION_PICK, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

      startActivityForResult(i, RESULT_LOAD_IMAGE); 
     } 
    });; 
+0

Убедитесь, что вы звоните 'editor.commit();' после того, как все, что вы сделали 'put'ing значения – Jakar

+0

Проблема заключается в том, когда я использую текстовый код для сохранения текста он не кажется, workl с ImageView-х , Он сказал, что ImageView.BufferType не для изображения, только для текста. И ImageView1) .setSelection для текста тоже слишком. Как я могу использовать его для изображений или я могу заменить это?!? – user3195144

ответ

0

Почему вы не можете сохранить изображение в каталоге кеша приложения.

String cacheDir = context.getCacheDir(); 
File imageFile = new File(cacheDir, "image1.jpg"); 
FileOutputStream out = new FileOutputStream(imageFile); 
out.write(imagebuffer, 0, imagebufferlength); 

Когда вам нужно использовать это изображение, вы можете прочитать его из каталога кеша и использовать его.

Для получения дополнительной информации, пожалуйста, обратитесь к приведенной ниже ссылке.

http://developer.android.com/training/basics/data-storage/files.html

+0

Я только что попробовал, и мне пришлось многому переделать, как придумал ошибки. Я использовал предустановленные решения. Я запустил приложение, и оно не сработает. Сказал, что приложение перестало работать. Что я должен делать? – user3195144

+0

можете ли вы вставить свой код и зарегистрировать его здесь? – Dasari

+0

Хорошо, я сделаю это через пару часов. Спасибо – user3195144

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