Autore Topic: Mostrare una foto in una ImageView  (Letto 479 volte)

Offline redjin

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Htc One S
  • Sistema operativo:
    Elementary OS Luna, Windows 8.1
Mostrare una foto in una ImageView
« il: 27 Luglio 2013, 10:48:02 CEST »
0
Ciao a tutti, ho un problema, la mia app riesce a fare foto e vorrei che visualizzasse un anteprima in un'imageview. Solo che ciò non succede, non riportando alcun errore.
Ecco il codice:
Codice (Java): [Seleziona]
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;

public class home extends Fragment {
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){
               
                View v =  inflater.inflate(R.layout.home, container, false);
                Button fotocamera = (Button) v.findViewById(R.id.avvio_fotocamera);
                final ImageView foto = (ImageView) v.findViewById(R.id.imageView);
       
                fotocamera.setOnClickListener(new View.OnClickListener() {
               
                        @Override
                        public void onClick(View arg0) {
                                // TODO Auto-generated method stub
                               
                               
                               
                                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-HHmmss");
                                String fileName = dateFormat.format(new Date()) + ".jpg";
                                File noncelafacciopiu = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), fileName);
                                Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(noncelafacciopiu));
                                startActivityForResult(i, 1);
                        }
                       
                        protected void onActivityResult(int resultcode,int requestcode, Intent data){
                                if (requestcode == 1){
                                        if(resultcode == Activity.RESULT_OK){
                                        Bitmap photo = (Bitmap) data.getExtras().get("data");
                                        foto.setImageBitmap(photo);
                                        }
                                }
                        }
                       
                       
                });
               
               
               
        return v;
}
}

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Mostrare una foto in una ImageView
« Risposta #1 il: 27 Luglio 2013, 11:12:09 CEST »
0
Il metodo onActivityResult deve stare nella classe Fragment e non nel OnClickListener.

Offline redjin

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Htc One S
  • Sistema operativo:
    Elementary OS Luna, Windows 8.1
Re:Mostrare una foto in una ImageView
« Risposta #2 il: 27 Luglio 2013, 11:52:56 CEST »
0
Se lo pongo fuori non posso usare la variabile foto...ho provato a sistemare così ma non funziona comunque:
Codice (Java): [Seleziona]
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;

public class home extends Fragment {
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){
               
                View v =  inflater.inflate(R.layout.home, container, false);
                Button fotocamera = (Button) v.findViewById(R.id.avvio_fotocamera);
               
       
                fotocamera.setOnClickListener(new View.OnClickListener() {
               
                        @Override
                        public void onClick(View arg0) {
                                // TODO Auto-generated method stub
                               
                               
                               
                                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-HHmmss");
                                String fileName = dateFormat.format(new Date()) + ".jpg";
                                File noncelafacciopiu = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), fileName);
                                Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(noncelafacciopiu));
                                startActivityForResult(i, 1);
                        }
                       
                       
                       
                       
                });
               
               
               
        return v;
}
        public void onActivityResult(int resultcode,int requestcode, Intent data){
                if (requestcode == 1){
                        if(resultcode == Activity.RESULT_OK){
                        Bitmap photo = (Bitmap) data.getExtras().get("data");
                        ImageView foto = (ImageView) getActivity().findViewById(R.id.imageView);
                        foto.setImageBitmap(photo);
                        }
                }
        }
}