CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: complicazio con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 10 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 13
Discussione:

Passaggio parametro da una activity ad un dialog di un'altra activity

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    30

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Question

    Passaggio parametro da una activity ad un dialog di un'altra activity

    Ciao.

    Ho il seguente problema.
    Ho MappaActivity che contiene un button che mi apre un Cutom Dialog.
    All'interno di quest'ultimo ho un button che mi fa accedere alla FotoActivity per scattare una foto.
    A foto correttamente salvata vorrei tornare alla MappaActivity, con il CutomDialog ancora aperto e con il passaggio del nome della foto.

    Spero di essermi spiegato

    Io per adesso ho provato nella FotoActivity a fare così:
    codice:
                    Intent i = new Intent(getApplicationContext(), MappaActivity.class);
                    String pkg=getPackageName();    
                    i.putExtra(pkg+".myString", nomeFoto + ".jpg"); //passaggio del parametro string con il nome dalla foto
                    startActivity(i);
    ma ovviamente mi apre solamente la MappaActivity senza CustomDialog.

    Mi servirebbe praticamente sapere come si fa (e se si può fare) a tornare indietro chiudendo l'activity Foto, passare la stringa e a mantenere il Dialog aperto.

    Grazie

  2.  
  3. #2
    Baby Droid L'avatar di tx84


    Registrato dal
    Aug 2012
    Messaggi
    43
    Smartphone
    Samsung Galaxy s3 i9300

    Ringraziamenti
    0
    Ringraziato 5 volte in 4 Posts
    Predefinito

    Ciao. Dal custom dialog prova a far partire foto activity con il metodo startActivityForResult (Intent intent) e poi recuperi i dati che ti servono.

    Inviato dal mio GT-I9300 con Tapatalk 2
    Samsung Galaxy s3 i9300
    Rom: Omega
    Kernel: Boeffla
    Mod: Jkay, Acid Audio Engine

  4. #3
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    30

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ciao,

    si si avevo risolto proprio così. Poi mi sono dimenticato di rispondere.

    Però se tocco il tasto Indietro mi si crasha l'applicazione

  5. #4
    Baby Droid L'avatar di tx84


    Registrato dal
    Aug 2012
    Messaggi
    43
    Smartphone
    Samsung Galaxy s3 i9300

    Ringraziamenti
    0
    Ringraziato 5 volte in 4 Posts
    Predefinito

    Nel dialog nel metodo onActivityResult (int requestCode, int resultCode, Intent data) gestisci l'evento RESULT_CANCELED.
    if (resultCode == Activity.RESULT_CANCELED){
    Toast.makeText(this, "azione cancellata", Toast.LENGTH_LONG).show();
    }
    Al posto del toast ovviamente decidi tu cosa fare

    Inviato dal mio GT-I9300 con Tapatalk 2
    Samsung Galaxy s3 i9300
    Rom: Omega
    Kernel: Boeffla
    Mod: Jkay, Acid Audio Engine

  6. #5
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    30

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Grazie per la risposta.
    In effetti passa da RESULT_CANCELED quando torno indietro,
    però in questo modo non mi restituisce i parametri che mi ero passato da MappaActivity -> FotoActivity -> MappaActivity

    infatti ho Intent data = null:
    codice:
    E/AndroidRuntime(22840): FATAL EXCEPTION: main
    E/AndroidRuntime(22840): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {
    it.tesi/it.tesi.MappaV2Activity}: java.lang.NullPointerException
    E/AndroidRuntime(22840):        at android.app.ActivityThread.deliverResults(ActivityThread.java:3205)
    E/AndroidRuntime(22840):        at android.app.ActivityThread.handleSendResult(ActivityThread.java:3248)
    E/AndroidRuntime(22840):        at android.app.ActivityThread.access$1200(ActivityThread.java:140)
    E/AndroidRuntime(22840):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285)
    E/AndroidRuntime(22840):        at android.os.Handler.dispatchMessage(Handler.java:99)
    E/AndroidRuntime(22840):        at android.os.Looper.loop(Looper.java:137)
    E/AndroidRuntime(22840):        at android.app.ActivityThread.main(ActivityThread.java:4921)
    E/AndroidRuntime(22840):        at java.lang.reflect.Method.invokeNative(Native Method)
    E/AndroidRuntime(22840):        at java.lang.reflect.Method.invoke(Method.java:511)
    E/AndroidRuntime(22840):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
    E/AndroidRuntime(22840):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
    E/AndroidRuntime(22840):        at dalvik.system.NativeStart.main(Native Method)
    E/AndroidRuntime(22840): Caused by: java.lang.NullPointerException
    E/AndroidRuntime(22840):        at it.mioprogetto.MappaActivity.onActivityResult(MappaActivity.java:1048)
    E/AndroidRuntime(22840):        at android.app.Activity.dispatchActivityResult(Activity.java:5390)
    E/AndroidRuntime(22840):        at android.app.ActivityThread.deliverResults(ActivityThread.java:3201)
    E/AndroidRuntime(22840):        ... 11 more
    in FotoActivity quando scatto la foto salvo i parametri così:

    codice:
    Intent iFoto = new Intent(MappaActivity.this, FotoActivity.class);
    String pkg=getPackageName();
            		        
    //passaggio dei parametri
    iFoto.putExtra(pkg+".utente", utente);
    iFoto.putExtra(pkg+".foto", foto+".jpg");
    Come faccio a passarmi gli stessi tornando indietro?
    ho necessariamente bisogno di "utente" e "foto" (anche se non viene scattata)

    devo fare una onStop o una onDestroy in FotoActivity e passarmi li i parametri?
    Ultima modifica di Ivan86; 16-04-13 alle 11:37

  7. #6
    Baby Droid L'avatar di tx84


    Registrato dal
    Aug 2012
    Messaggi
    43
    Smartphone
    Samsung Galaxy s3 i9300

    Ringraziamenti
    0
    Ringraziato 5 volte in 4 Posts
    Predefinito

    in MappaActivity:



    in FotoActivity:


    nel metodo che utilizzi per scattare e salvare la foto:


    nel metodo richiamato per terminare l'Activity


    Non sapendo come hai implementato la classe (presumo implementando SurfaceHolder.Callback) sono andato a caso
    se ho indovinato l'intent lo recuperi nel metodo onCreate(), il primo caso (result ok) alla fine del metodo onPictureTaken ed il secondo (result canceled) nel metodo surfaceDestroyed.
    Magari se posti il codice riesco ad aiutarti meglio.

  8. #7
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    30

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ho visto il tuo snippet di codice e mi sembra di aver fatto lo stesso.
    Ti posto il codice magari trovi tu l'errore dove io non lo vedo

    FotoActivity:
    codice:
    public class FotoActivity extends Activity implements SurfaceHolder.Callback{
        ProgressDialog pd;
        Intent iFoto;
    	
    	@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.mod_foto);
            
    		// Prelevo l'id utente da MappaActivity
    		iFoto = getIntent();
    		String pkg    = getPackageName();
            utente	 	  = iFoto.getStringExtra(pkg+".utente");
            via			  = iFoto.getStringExtra(pkg+".via");
            citta		  = iFoto.getStringExtra(pkg+".citta");
            
            // SCATTA FOTO
            Button buttonPicture = (Button) findViewById(R.id.camera_surface_button);
    		buttonPicture.setOnClickListener(new OnClickListener(){
    			public void onClick(View v) {
    				mCamera.takePicture(shutterCallback, rawCallback, jpegCallback); 
    			}
    		});
    		
    		mSurfaceView 	= (SurfaceView)findViewById(R.id.camera_surface);
    		mSurfaceView.setClickable(true);
    		
            mSurfaceHolder  = mSurfaceView.getHolder();	//recupero l'holder della surfaceview
            mSurfaceHolder.addCallback(this);			//faccio la bind alla nostra activity
            mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);	//tipo di surface, suggerito nei tutorial ufficiali
            
            pd = null;
        } 
        
        @Override
        public void onPause(){
            super.onPause();
            if(pd != null)
                pd.dismiss();
        }
        
        ShutterCallback shutterCallback = new ShutterCallback() {
          public void onShutter() {
            Log.d(TAG, "onShutter'd");
          }
        };
    
        PictureCallback rawCallback = new PictureCallback() {
          public void onPictureTaken(byte[] data, Camera camera) {
            Log.d(TAG, "onPictureTaken - raw");
          }
        };
    
        PictureCallback jpegCallback = new PictureCallback() {
          public void onPictureTaken(byte[] data, Camera camera) {
            FileOutputStream outStream = null;
            try {
              nomeFoto = String.format("%d", System.currentTimeMillis());
              outStream = new FileOutputStream(String.format("/sdcard/" + nomeFoto + ".jpg"));
              outStream.write(data);
              outStream.close();
              
              // creo e avvio asynctask per scattare la foto
              FotoGetTask task = new FotoGetTask();
              task.execute("");
    
              Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
            } catch (FileNotFoundException e) {
              e.printStackTrace();
            } catch (IOException e) {
              e.printStackTrace();
            } finally {
            }
            Log.d(TAG, "onPictureTaken - jpeg");
          }
    
        };
    	
    	public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
    		if (mPreviewRunning)
    			mCamera.stopPreview();
    		
    		//setto le preferenze
    		Camera.Parameters p = mCamera.getParameters();	//prendo le preferenze della camera
    		p.setPreviewSize(arg2, arg3);
    		ArrayList<Size> list = (ArrayList<Size>) p.getSupportedPictureSizes();	//recupero le risoluzioni supportate dalla camera
            int picture_width = list.get(list.size()-1).width;
            int picture_height = list.get(list.size()-1).height;
            p.setPictureSize(picture_width, picture_height);	//setto la camera alla risoluzione più bassa
            p.setJpegQuality(50);	// qualità compressione JPEG
            p.setFlashMode("on");
            p.setFocusMode("auto");
            
            // salvo le pref
            mCamera.setParameters(p);
            try {
            	//lancio la preview
    			mCamera.setPreviewDisplay(arg0);	
    			mCamera.startPreview();
    			mPreviewRunning = true;
    		} catch (IOException e) {
    			//gestione errore
    		}
    	
    		
    	}
    	
    	public void surfaceCreated(SurfaceHolder holder) {
    		if (mCamera == null) {
    			mCamera = Camera.open();
    	        try {
    	        	mCamera.setPreviewDisplay(holder);
    
    	        
    	        } catch (IOException e) {
    	        	mCamera.release();
    	        	mCamera = null;
    	        }
    	    }
    		
    	}
    
    	public void surfaceDestroyed(SurfaceHolder holder) {
    		iFoto.putExtra("pUtente",utente);
    		iFoto.putExtra("pVia",via);
    		iFoto.putExtra("pCitta",citta);
    
       	    setResult(RESULT_CANCELED,iFoto);     
       	    
    		if (mCamera != null) {     	 
    			mCamera.stopPreview();
    			mCamera.setPreviewCallback(null);
    			mCamera.release();
    			mCamera = null;
    		}
    		
    		finish();
    	}
    	
    	
    	private class FotoGetTask extends AsyncTask<String,String,String>  {
           @Override
            protected void onPreExecute(){
        	   pd = ProgressDialog.show(FotoActivity.this,"Foto","Caricamento in corso...",true,false);
            }
    	       
    		protected String doInBackground(String... params) {
    			//Upload del file verso il server ftp
    			client = new FTPClient();
    	        
    	        try {
    	        	InetAddress indirizzo = InetAddress.getByName("www.miodominio.it");
    	        	client.connect(indirizzo);
    				//aperta la connessione al server procedo al login
    				boolean loggato = client.login("mio@dominio.it", "miapwd");
    
    				//apro il file contenuto nel path /sdcard come stream
    				client.setFileType(FTP.BINARY_FILE_TYPE); 					// imposto il tipo di dati, da modificare a seconda dell'utilità
    				File sdcardDir = Environment.getExternalStorageDirectory(); //prendo il riferimento alla memoria esterna
    				File file = new File(sdcardDir, nomeFoto + ".jpg");			//prendo il riferimento al file salvato sulla sd
    				FileInputStream fis = new FileInputStream(file);			//creo uno stream in input a partire dal mio file
    				
    				boolean upload_ok = client.storeFile("/miodominio.it/img/"+ nomeFoto + ".jpg", fis);
    				fis.close();												//procedo alla chiusura dello stream, infatti storeFile non chiude fis
    				
    			} catch (SocketException e) {
    				e.printStackTrace();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
               return nomeFoto;           
            }
    
            @Override
            protected void onPostExecute(String foto) {
            	pd.dismiss();
            	if (foto.equals("")){
            		Toast.makeText(FotoActivity.this, "Connessione dati assente", Toast.LENGTH_LONG).show();
            		finish();
            	}else{
           			       		
            		iFoto.putExtra("pFoto",foto+".jpg");
            		iFoto.putExtra("pUtente",utente);
            		iFoto.putExtra("pVia",via);
            		iFoto.putExtra("pCitta",citta);
    	
    	       	    setResult(RESULT_OK,iFoto);     
    	       	    finish();
    	       	    
    	       	    Toast.makeText(FotoActivity.this, "Foto caricata con successo!", Toast.LENGTH_LONG).show();
            	}
            }
         }
    	
    }
    MappaActivity:
    codice:
    protected void onActivityResult(int requestCode, int resultCode, Intent pIntent) {
        	if (requestCode == 1) {
        		if(resultCode == RESULT_OK){      
        			foto = pIntent.getStringExtra("pFoto");
        	    }
        		if (resultCode == RESULT_CANCELED){
        	                foto = "immagine_non_disponibile.jpg";
        	    }
        	    utente	= pIntent.getStringExtra("pUtente");
        	    via		= pIntent.getStringExtra("pVia");
        	    citta	= pIntent.getStringExtra("pCitta");
        		
        	    showDialog(CUSTOM_DIALOG_ID);	
    
        	}
        }
    grazie 1000

  9. #8
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    30

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Niente?

    Uffa sto impazzendo.
    Eppure sarà una stupidaggine

  10. #9
    Baby Droid L'avatar di tx84


    Registrato dal
    Aug 2012
    Messaggi
    43
    Smartphone
    Samsung Galaxy s3 i9300

    Ringraziamenti
    0
    Ringraziato 5 volte in 4 Posts
    Predefinito

    Ti ho risposto 2 post fa ma se non posti il codice non capisco dove c'è l'errore

    Inviato dal mio GT-I9300 con Tapatalk 2
    Samsung Galaxy s3 i9300
    Rom: Omega
    Kernel: Boeffla
    Mod: Jkay, Acid Audio Engine

  11. #10
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    30

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ti ho risposto anche io e ti ho scritto il mio codice.
    Riesci a vedere il mio commento #7 ?
    https://www.androidiani.com/forum/pr...ml#post3687822

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy