Ciao ragazzi, vorrei che questa applicazione al click del bottone faccia comparire la scritta "ciao", con notifica toast, solo nel caso in cui nel campo di testo ci sia scritto "ciao".
Praticamente al click non succede nulla.
Visualizzazione stampabile
Ciao ragazzi, vorrei che questa applicazione al click del bottone faccia comparire la scritta "ciao", con notifica toast, solo nel caso in cui nel campo di testo ci sia scritto "ciao".
Praticamente al click non succede nulla.
In android non puoi mettere un loop while nello stesso thread della UI perchè causerà il blocco dell'activity, soprattutto perchè in questo caso il tuo while corrisponde, grossomodo, ad un "while(true)" il che significa un loop infinito ;)
Puoi ovviare al problema semplicemente usando:
eventualmente puoi implementare anche un case statement invece di utilizzare il condizionale :P
Grazie mille, con l'if ho comunque avuto problemi. :D ora provo 😝
Ok, ci sono riuscito, era abbastanza semplice.
Ora sto cercando di fare qualcosa di più complicato, o almeno per me complicato ahah.
Al click di un bottone se il campo password è corretto il wifi cambia stato.
Ho impostato i permessi nel manifest ma l'app crasha. A cosa può essere dovuto?
Altra cosa, in Android per capire da cosa è dovuto devi postare il logcat :D
Il primo bottone è ok, erano solo i permessi. Ora mi chiedo una cosa, non è meglio creare una nuova classe in un nuovo package per creare un altro bottone? Sarebbe più ordinata come cosa. Tuttavia,non ci riesco
A meno che non ti serva una view che svolga azioni particolari, non c'e' bisogno di creare una nuova classe per un bottone :P
basta aggiungerlo nel layout e implementare il codice nell'attuale classe.
Se invece ti serve una nuova Activity, il discorso cambia :)
A proposito di activity, per avere prestazioni migliori è consigliabile utilizzare il più possibile i fragments invece delle activity. Il funzionamento è molto simile e implementarli è abbastanza semplice :)
Eventualmente dai un'occhiata a questo codice: https://github.com/cesco89/SlidingMenu-sample/
Tralascia la parte inerente allo SlidingMenu (è una libreria esterna) e dai un'occhiata a come avviene la sostituzione dei fragments tramite il FragmentManager.
Fondamentalmente, la tua activity sarà praticamente vuota e agirà da container per i fragments. Nel layout della Activity dovrai solo inserire un FrameLayout, mentre nei fragments andrai ad utilizzare i layout con il contenuto vero e proprio.
E' più semplice a farsi che a dirsi comunque :)
Piccola aggiunta sul significato dei fragment (su smartphone, su tablet il discorso è lievemente differente) rispetto quanto detto da cesco.
Utilizza i fragment quando hanno uno scopo in "comune", e lancia una nuova activity quando questo scopo cambia. Esempio pratico. Schermata di accesso ad un tuo servizio (la tipica schermata di login), dove dai la possibilità all'utente di registrare un account per accedere oppure effettuare il login (se già registrato). Lo scopo di questa schermata in questo caso è l'accesso ad un tuo servizio, e lanciare un'activity per la registrazione e una per il login non ha molto senso. Quindi procedi scrivendo un'unica activity che mostra inizialmente un fragment contenente due bottoni (login ed registrazione), ognuno dei quali una volta cliccato mostrerà il relativo fragment di login o di registrazione (dove ovviamente questi fragment avranno al loro interno i widget necessari per completare l'azione). Una volta che l'accesso o la registrazione è andata a buon fine (e quindi hai terminato il tuo "scopo" di accesso), puoi lanciare una nuova activity che mostra le cose che puoi fare una volta acceduto.
Quindi ad esempio creare un nuovo package per un bottone è inutile, piuttosto se voglio far lanciare una nuova activity ad un bottone come proseguo? E poi un activity è una nuova schermata da quanto ho capito.
Esempio, cliccare su un contatto su whatsapp mi fa aprire una nuova activity che è la chat giusto?
Allora, non riesco a capire una cosa a livello teorico e non ho trovato risposta altrove.
Quando nel MainActivity scrive "extends activity" a cosa si rifà di preciso? Al main.xml?
E poi, ho creato il secondo xml con un semplice testo.
Nel mainactivity.java ho assegnato al bottone l'apertura di una nuova activity ma in "activityDaLanciare.class" non capisco a cosa ti rifai. :( :confused:
La parola extends seguita da il nome di una classe serve per dire alla classe corrente da quale classe ereditare le proprietà. ActivityDaLanciare.class è il nome della classe dell'Activity che vuoi lanciare/aprire quando clicchi sul Button. Ti consiglio la lettura di una guida base sulla programmazione Android.
No queste cose le so. Le ho studiate.
Ma non capisco proprio la "activity" a cui fa riferimento cosa è?
E poi credo che il fatto che non so cosa mettere al posto di "activituDaLanciare" sia legato a questa mia mancanza.
Era un esempio. Se devi lanciare una nuova Activity e per farla semplice vuoi aprire una nuova "schermata" devi prima creare il layout che definisce gli elementi che saranno all'interno dell'Activity e successivamente creare la classe che definisce il comportamento che la componentistica del layout dovrà assumere in determinate circostanze.
E ancora una volta, questo l'ho capito. Ma a livello pratico devo per forza creare un altro package con classe publica e in questo caso come faccio a definire che si sta riferendo alla seconda Activity? Questo non capisco.
Ma io da quanto ho letto sul manuale ci può essere solo una classe pubblica per package. È sbagliato?
Nel manuale che sto usando. Allegato 104417
Ed effettivamente, se vado a creare un'altra classe pubblic mi riempie di errori. Comunque continuo a non capire come fargli aprire quella schermata.
Proprio non lo capisco :cry:
Rileggiti bene quanto scritto su quel testo prima di commentare. Nel testo si fa riferimento ad un FILE, non ad un package. Cioè, all'interno di un file puoi dichiarare una sola classe pubblica, ma ne puoi dichiarare altre (all'interno dello stesso file) senza l'attributo PUBLIC. Si chiamano inner class, ovvero classi all'interno di una classe.
Ma se creo un altro file comunque è un altro package.
NO.
Ma che c'entrano i package? e dove sta scritto che se crei un altro file è un altro package?
Il package è una sorta di cartella che serve per suddividere meglio il codice, e creare un nuovo file .java NON significa per forza creare un nuovo package. A mio avviso stai cercando di fare tante cose tutte insieme, senza capirne effettivamente il significato. Per il momento ficca tutti i file java dentro l'unico package che viene creato di default (che quasi sempre è com.example.nomeprogetto e vedi se tutto funziona. Poi come step successivo, ti crei tutti i package che ti pare e ti ci sposti i files dentro