Autore Topic: Aggiungere immagini con un Intent.  (Letto 705 volte)

Offline glacer

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
  • Sistema operativo:
    MAC OS X 10.6
Aggiungere immagini con un Intent.
« il: 18 Marzo 2012, 16:28:03 CET »
0
Ciao Ragazzi,

un problema che credo sia semplicissimo da risolvere.

Uso un option meno per caricare un immagine in una imageview e salvarne il path.

Il codice e 'qui riportato :

 
Codice (Java): [Seleziona]
public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                case R.id.item1:
                       
                         Intent data = new Intent(Intent.ACTION_GET_CONTENT);
                     data.setType("image/*");
                     startActivityForResult(Intent.createChooser(data, "Select Source"),SELECT_PICTURE);
                    return true;    

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            if (requestCode == SELECT_PICTURE) {
                //shareimg.setVisibility(0);
                Uri selectedImageUri = data.getData();
                immagine = getPath(selectedImageUri);
                System.out.println("Image Path : " + immagine);
                image.setImageURI(selectedImageUri);
            }
        }
        }

        //              super.onActivityResult(requestCode, resultCode, data);
       

        public String getPath(Uri uri) {
                String[] projection = { MediaStore.Images.Media.DATA };
                Cursor cursor = managedQuery(uri, projection, null, null, null);
                int column_index = cursor
                                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                cursor.moveToFirst();
                return cursor.getString(column_index);

   

Dopo che scelgo l'immagine dalla galleria esce dall'applicazione...pensavo, può dipendere da
Codice (Java): [Seleziona]
protected void onPause() {
                // TODO Auto-generated method stub
                super.onPause();
                finish();
        }

Se si come risolvo? Il codice e' corretto per aggiungere l'immagine?

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Aggiungere immagini con un Intent.
« Risposta #1 il: 18 Marzo 2012, 17:51:03 CET »
0
Non so se è da questo che derivi il problema (a naso direi di si).
Ma in generale direi che è una pessima idea chiamare finish() nell'onPause: in questo modo la tua activity non è in grado di "freezarsi", e ogni volta che va in pausa (quindi anche semplicemente schiacciando Home o - presumo - lanciando la gallery) chiama l'onDestroy. E quindi in teoria nello stack non c'è più nessuna activity cui ritornare il valore. Credo!

Offline glacer

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
  • Sistema operativo:
    MAC OS X 10.6
Re:Aggiungere immagini con un Intent.
« Risposta #2 il: 18 Marzo 2012, 17:52:13 CET »
0
Quindi tolgo il finish , cosa consigli di mettere nell' On Pause?

Se tolgo finish() ottengo questo nel logCat


03-18 17:57:07.902: E/AndroidRuntime(2105): FATAL EXCEPTION: main
03-18 17:57:07.902: E/AndroidRuntime(2105): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://media/external/images/media/1 }} to activity {diary.activities/diary.activities.NoteCreate}: java.lang.NullPointerException
03-18 17:57:07.902: E/AndroidRuntime(2105):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2532)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:2574)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at android.app.ActivityThread.access$2000(ActivityThread.java:117)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:961)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at android.os.Looper.loop(Looper.java:123)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at android.app.ActivityThread.main(ActivityThread.java:3683)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at java.lang.reflect.Method.invokeNative(Native Method)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at java.lang.reflect.Method.invoke(Method.java:507)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at dalvik.system.NativeStart.main(Native Method)
03-18 17:57:07.902: E/AndroidRuntime(2105): Caused by: java.lang.NullPointerException
03-18 17:57:07.902: E/AndroidRuntime(2105):    at diary.activities.NoteCreate.onActivityResult(NoteCreate.java:100)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at android.app.Activity.dispatchActivityResult(Activity.java:3908)
03-18 17:57:07.902: E/AndroidRuntime(2105):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2528)
03-18 17:57:07.902: E/AndroidRuntime(2105):    ... 11 more
« Ultima modifica: 18 Marzo 2012, 18:00:25 CET da glacer »

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Aggiungere immagini con un Intent.
« Risposta #3 il: 18 Marzo 2012, 18:13:33 CET »
0
Cosa consiglio di mettere nell'onPause? dipende da quello che devi fare  :-) Se hai necessità di compiere operazioni quando l'activity va in pausa, queste operazioni puoi avviarle overridando onPause. Altrimenti non fai l'override.

Per il logcat, questa riga mi pare esplicita:
Codice (Java): [Seleziona]
03-18 17:57:07.902: E/AndroidRuntime(2105): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://media/external/images/media/1 }} to activity {diary.activities/diary.activities.NoteCreate}: java.lang.NullPointerExceptionGoogolando si trova parecchio a riguardo, ma molto dipende da quel che si sta facendo e come. Direi che comunque il logcat si lamenta di qualcosa sul ritorno dei dati.