CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 4eyes81 con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: elmegio con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 43 Thanks ricevuti nell'ultimo mese

Pagina 2 di 3 primaprima 123 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 11 a 20 su 22
Discussione:

modularizzare codice android

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. #11
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Feeeeermi tutti.
    La onCreateDialog() non è che puoi metterla a piacere in una classe e pensare che funzioni.
    La onCreateDialog(int i) è un metodo proprio di una Activity e fa parte del ciclo di vita delle attività. Quindi deve essere necessariamente implementata su una classe che estenda Activity.
    Quando all'inizio ti ho detto che AlertDialogsystem non doveva essere necessariamente una Activity intendevo che il wrapper che deve contenere la logica di fabbricazione i dialog non deve essere necessariamente una activity, ma la onCreateDialog(int i) DEVE necessariamente essere inserito in un'activity.

    Quindi inserisci la onCreateDialog nella activity e lì dentro invochi la AlertDialogsystem dove fabbrichi il dialog.

    la showdialog la metti nell'activity dove... bhe... dove deve apparire il dialog.
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  2. Il seguente Utente ha ringraziato Cymon per il post:

    allmystery (04-01-11)

  3.  
  4. #12
    Senior Droid


    Registrato dal
    Dec 2009
    Messaggi
    307

    Ringraziamenti
    15
    Ringraziato 40 volte in 39 Posts
    Predefinito

    Io modificherei la classe AlertDialogSystem per farla funzionare a mo' di factory, ovvero costruire solo la dialog e la restituisce fuori, il codice che la invoca e la mostra resta nell'activity, la classe ti servirà solo a costruire il dialog dove serve.

  5. Il seguente Utente ha ringraziato Orochi per il post:

    allmystery (04-01-11)

  6. #13
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Quote Originariamente inviato da Orochi Visualizza il messaggio
    Io modificherei la classe AlertDialogSystem per farla funzionare a mo' di factory, ovvero costruire solo la dialog e la restituisce fuori, il codice che la invoca e la mostra resta nell'activity, la classe ti servirà solo a costruire il dialog dove serve.
    Esattamente il mio pensiero!
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  7. #14
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    107

    Ringraziamenti
    22
    Ringraziato 1 volta in 1 Post
    Predefinito

    ok Grazie ragazzi! mi avete non solo chiarito le idee, ma ridato un pò di speranza !!!!!
    Per completezza , posto i codici funzionanti! Volevo seguire il consiglio di Orochi sul context, ma non sò ancora se quella che stò sviluppando dovrà essere un'applicazione "pesante"
    codice:
    public class audio extends Activity {
        /** Called when the activity is first created. */
    	AlertDialog.Builder builder ;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
           setContentView(R.layout.audio);
           
           //richiamo bottoni da audio.xml
            Button si=(Button)findViewById(R.id.buttonsi);
        	
            Button no=(Button)findViewById(R.id.buttonno);
            
            si.setOnClickListener(new OnClickListener(){
    	@Override
    			public void onClick(View arg0) {
    				// TODO Auto-generated method stub
    				int i=AlertDialogsystem.DIALOG_PAUSED_ID;
    			onCreateDialog(i);
    			showDialog(i);
    				           	}
            });
    
            no.setOnClickListener(new OnClickListener(){
    
    			@Override
    			public void onClick(View arg0) {
    				// TODO Auto-generated method stub
    				}
            	});
    
    }
    }
       public Dialog onCreateDialog( int i){
        	
        	AlertDialogsystem alert=new AlertDialogsystem();
        	Context cnt=this;
        	return alert.CreateDialog(cnt,i);
        	
    }
    
    }
    alertdialog
    codice:
    public class AlertDialogsystem {
    	static final int DIALOG_PAUSED_ID = 0;
    	static final int DIALOG_GAMEOVER_ID = 1;
    	 AlertDialog.Builder builder ;
    	Dialog dialog;
    	public Dialog CreateDialog(Context cnt,int id) {
    	
    	    switch(id) {
    	    case DIALOG_PAUSED_ID:
    	 
    	    	builder=new AlertDialog.Builder( cnt);
    	    builder.setTitle("prova");
    	    builder.setMessage("prova messaggio");
    	    builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
    			
    			@Override
    			public void onClick(DialogInterface dialog, int which) {
    				// TODO Auto-generated method stub
    				
    			}
    		});
    	    builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
    			
    			@Override
    			public void onClick(DialogInterface dialog, int which) {
    				// TODO Auto-generated method stub
    				
    			}
    		});
    	   
    	    	dialog= builder.create();
    	    	
    	       break;
    	    case DIALOG_GAMEOVER_ID:
    	        // do the work to define the game over Dialog
    	        break;
    	    default:
    	        builder= null;
    	    }
    	    return dialog;
    	}
       
    }

  8. #15
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Quote Originariamente inviato da allmystery Visualizza il messaggio
    ok Grazie ragazzi! mi avete non solo chiarito le idee, ma ridato un pò di speranza !!!!!
    Così ci fai sentire Emergency

    P.S. Con tag JAVA invece del tag CODE puoi postare codice "colorato"*, più leggibile.





    *: Che ci crediate o no, nonostante tutto il mio purismo, contro il codice colorato non ho niente. Anche se un giorno vi capiterà di lavorare via terminale monocromatico in vi puro, quindi tenete sempre a mente che potreste non averlo a disposizone.
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  9. #16
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    107

    Ringraziamenti
    22
    Ringraziato 1 volta in 1 Post
    Predefinito

    ok lo terrò a mente

  10. #17
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    107

    Ringraziamenti
    22
    Ringraziato 1 volta in 1 Post
    Predefinito

    Rieccomi.... non sò se aprire un nuovo post, oppure continuare questo, perchè non ho capito se la questione adesso si è spostata sul context, oppure è rimasta la modularizzazione del codice. Magari poi segnalatemi voi...
    La questione è questa: (piccolo riassunto) Nel file AlertDialogsystem io genero i dialog da restituire al chiamante, ovvero audio.java. Nell'alterdialog si implementa anche ciò che deve accadere quando si clicca sul pulsante si, e sul no.Io devo cambiare schermata, ovvero devo passare da un activity ad un'altra.
    Ora sorge il problema. Alertdialogsystem non estende Activity. e io da subito ho pensato che dopo l'onclick chiamo un metodo implementato in audio.


    senza nessun risultato.
    Ovviamente nel metodo passa_descrizione_applicazione() c'è la creazione dell'intent e la chiamata di startActivity.
    Ho fatto altre mille prove da stamattina. Come ad esempio, cercare di implementare l'intero Onclick in audio. ovvero:
    Ma ovviamente poi AlertDialogsystem dà errore in
    vuole per forza qui l'onclick.

    dai dai datemi suggerimenti, che finalmente stò imparando! comunque secondo me è il context che forse dà problemi.

  11. #18
    Senior Droid


    Registrato dal
    Dec 2009
    Messaggi
    307

    Ringraziamenti
    15
    Ringraziato 40 volte in 39 Posts
    Predefinito

    Potresti provare a passare il listener da fuori al metodo che costruisce il dialog, in modo da crearlo fuori e assegnarlo dentro col builder...

  12. #19
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    107

    Ringraziamenti
    22
    Ringraziato 1 volta in 1 Post
    Predefinito

    misà che non ho capito molto bene.


    e in audio che esteende activity

    ps:io clicco su java al posto di CODE ma nn fà il testo rosso.... cmq ....

  13. #20
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Quote Originariamente inviato da allmystery Visualizza il messaggio
    ps:io clicco su java al posto di CODE ma nn fà il testo rosso.... cmq ....
    Vuoi troppo... a me interessava la colorazione della sintassi

    Comunque credo che tu continui a fare con il framework cose un po' perverse

    Se audio è una activity non credo sia molto bello che tu cerchi di istanziarla con una new e sperare di poter usare un suo metodo per lanciare un intent. E' tutto fuori framework.

    Devi capire che la modularizzazione è una cosa buona e giusta, ma devi far fare agli elementi android le parti più strettamente legate al ciclo di vita android.

    E qui interviene il fatto che hai dovuto passare il context alla tua classe. Secondo me dovresti:

    - rendere il tuo alertdialogsystem affinchè implementi DialogInterface.OnClickListener

    - Passare la classe medesima al listener
    builder.setPositiveButton("ok", this);

    poi implementare in alertdialogsystem il metodo onClick. E quando devi lanciare l'intent invocare un metodo del cnt che a questo punto devi salvarti da qualche parte mentre lo passi al metodo.


    Sai una cosa? Quando la modularizzazione porta a soluzioni così contorte di solito io comincio a sospettare che sia un modo errato di modularizzare...
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

Pagina 2 di 3 primaprima 123 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