2016-03-30 11 views
0

Dies ist der Link, der verwendet wird ... http://javatechig.com/android/writing-image-picker-using-intent-in-android Problem ist, dass Bilder nicht speichern. Wenn ich Bild auswählen, kommt es in ImageView.Wenn ich auch aus dieser Aktivität kam wie aus der App, es spart nicht ... Bitte helfen Sie mir.Bild speichert nicht in Profilbild

Jede Hilfe wäre willkommen.

pickImage.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View view) {     
       Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
       photoPickerIntent.setType("image/*"); 
       startActivityForResult(photoPickerIntent, SELECT_PHOTO); 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
     super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

     switch(requestCode) { 
     case SELECT_PHOTO: 
      if(resultCode == RESULT_OK){ 
       try { 
        final Uri imageUri = imageReturnedIntent.getData(); 
        final InputStream imageStream = getContentResolver().openInputStream(imageUri); 
        final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream); 
        imageView.setImageBitmap(selectedImage); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } 

      } 
     } 
    } 
+0

Sie benötigen Sharedpreference das Bild zu speichern, so dass, wenn Sie die Anwendung/Tätigkeit wieder aufnehmen wieder zeigt es das Bild –

+0

Können Sie die diesen Code senden ..welche meine image.I haben keine viel Wissen seiner – Manish

Antwort

0

Sie können wie folgt tun:

  1. Machen globale Variable

    SharedPreferences sp; 
    
  2. In onCreate() nach Bezug Ihres Imageview bekommen

    sp=getSharedPreferences("profilePicture",MODE_PRIVATE); 
    
    if(!sp.getString("dp","").equals("")){ 
        byte[] decodedString = Base64.decode(sp.getString("dp", ""), Base64.DEFAULT); 
        Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
        imageView.setImageBitmap(decodedByte); 
    } 
    
  3. In onAktivitätR eiter Verfahren, nachdem Sie das Bild in Imageview Einstellung, schreiben Sie diesen Code:

     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
         selectedImage.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object 
         byte[] b = baos.toByteArray(); 
         String encodedImage = Base64.encodeToString(b, Base64.DEFAULT); 
         sp.edit().putString("dp", encodedImage).commit(); 
    

Dieser Code sollte funktionieren. Bitte versuche. Wenn es nicht funktioniert, kann ich Ihnen den vollen Aktivitätscode geben.

+0

Hallo Freund arbeiten – Manish

+0

speichern Bitte können Sie den vollen Aktivitätscode senden ..so dass ich meinen Code richtig verbessern kann – Manish

+0

Wenn es funktioniert dann brauchen Sie keinen vollen Code, Ihr Code ist besser und effizienter als meiner :) :) Alles Gute –

0

was Sie tun, ist Ihre Picking-Bild aus der Galerie und setzen Bild zu Imageview mit seiner Bitmap. Wenn Sie die Aktivität verlassen, werden alle mit dieser Aktivität verknüpften Ansichtskomponenten ebenfalls zerstört. Eine Sache, die Sie hier verstehen müssen, ist, dass Sie keine Bitmap oder Bildpfad für spätere Darstellung speichern, indem Sie in Ihrer Logik nachsehen, dass das Speichern und Laden des gespeicherten Bildes fehlt.

Lösung ist,

Bild speichern Pfad Präferenz in geteilt, wenn Sie Bild aus der Galerie auswählen. Versuchen Sie, ein Bild aus dem gespeicherten Pfad zu laden, stellen Sie außerdem sicher, dass der Bildpfad gültig ist (in dem Sinne, dass das Bild vorhanden ist), bevor Sie die Bitmap in Imageview laden.

Ich hoffe, dass Sie dies erreichen werden.

+0

Dank Chetan ... Es klar mein Konzept – Manish

+0

Hallo ..könnte ich Sie bitten, Abstimmung zu geben, wenn Sie mit meinen Bedenken zufrieden waren. – chethan

+0

Wenn ich Bewertung gebe .. es zeigt, sobald Sie 15 Repu haben .. wird es öffentlich zeigen – Manish