Visualizzazione stampabile
-
Basic How to
Ho cercato su molti forum degli how to di base per poter iniziare a capire la programmazione di applicazioni per android...la risposta è sempre la stessa: studiare java.
Premetto che non ho mai lavorato in java, ma ho una piccola base di programmazione, dalle basi scolastiche del vecchio basic, poi pascal e successivo passaggio a c++ (senza l'introduzione agli oggetti, fondamentali in java), per terminare con uno studio approfondito di php e relativa introduzione autodidattica agli oggetti ed al linguaggi di scripting javascript, e qualche cenno di Visual BAsic, per cui, non ho mai programmato in java, ma non sono proprio alle prime prime armi, no?!
Ho installato Eclipse e il plugin di Android, ieri ho seguito il tutorial per il fatidico Hello World e sono rimasto un po'...disorientato...c'è una qualche documentazione che tocchi un po' le basi? Sono daccordo con classi costruttori metodi e quant'altro però sono rimasto un po' spiazzato dall'approccio...grazie in anticipo
-
Eh, la tua richesta è un po generica mi pare..
Che cosa ti ha lasciato "disorientato" ?
-
Quote:
Originariamente inviato da
Andrea
Eh, la tua richesta è un po generica mi pare..
Che cosa ti ha lasciato "disorientato" ?
A dir la verità un po' tutto...ti accontento subito ecco il dettaglio...con relativi commenti che esprimono le mie perplessità da ignorante nonchè newbie ma volenteroso
Codice PHP:
package com.example.helloandroid;
#1. immagino che è obbligatorio definire il nome del software.
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
#2. Queste sono librerie, giusto? Un po' come il C, ma di cosa si occupano??
# Dove trovo i vari metodi? E una lista di tutte le altre librerie create e
# messe a disposizione da AOSP?
public class HelloAndroid extends Activity {
#3. Definisco una classe pubblica di nome HelloAndroid che è un'estensione
# di Activity che presupponto sia ovviamente anch'essa una classe,
# il che significa che HelloAndroid eredita tutti i metodi di Activity,
# giusto??
/** Called when the activity is first created. */
@Override
#4. Questo che roba è?!
public void onCreate(Bundle savedInstanceState) {
#5. in php ad esempio, la funzione costruttrice deve avere lo stesso nome
# dell'intera classe, nel caso di Android invece è d'obbligo che
# il metodo costruttore si chiami onCreate e fin qui nessun problema
# il costruttore in questo caso non deve generare
# nessun risultato (void), è un metodo pubblico (e cos'è un metodo
# pubblico all'interno di una classe? Non deve sempre e comunque essere
# richiamato come metodo dell'oggetto? Tipo nomeOggetto.onCreate?)
# E il "Bundle savedInstanceState" cos'è?
super.onCreate(savedInstanceState);
#6. chi è super? dove è stato definito? Non è un istanza della
# classe, non ho visto in giro una roba tipo
# super = new HelloAndroid, perchè il nome della classe
# è HelloAndroid, ma quando è stato creato un oggetto della
# classe HelloAndroid?
# E poi scusate, ma viene fatto riferimento al metodo
# onCreate direttamente dentro il metodo stesso?!?!
# Che fa chiama se stesso?!
TextView tv = new TextView(this);
#7. bene, qui creo un oggeto "tv" della classe TextView
# e passo come parametro al metodo costruttore questa
# stessa classe (this), ma perchè si deve scrivere
# TextView anche prima? Non basta un:
# tv = new TextView(this);?
tv.setText("Hello, Android");
#8. qui ora è più semplice, passo la stringa "Hello, Android" al
# metodo setText dell'oggetto tv
setContentView(tv);
#9. qui proprio non capisco nulla,setContentView è una funzione
# generica? Non è chiamata come metodo di un oggetto
# anche se viene passato come parametro l'intero oggetto tv.
# e la connessione con il file Xml dove la trovo?
}
}
Se riuscissi a capire questi dettagli nello specifico poi il resto è discesa, spulciare le librerie che sono a disposizione non è un problema, anche la sintassi credo sia specificata da qualche parte...
-
ok, trovate le librerie android.app e android.os che contengono le classi Activity e Bundle, resta tutto il resto (scusate il giro di parole)
-
Tutte le tue richieste sono piu o meno tutte riguardanti a java..
Infatti, tranne per la setContentView tutte le tue domande sono per java. Secondo me ti conviene leggere in giro cos'è un package e come si programma un pochino in java..
Io non ho mai studiato un piffero di java e tral'altro sono riuscito a scrivere codice per android.. Perciò non perdere le speranze.. Ti serve solamente capire come funziona il java..
Inoltre sul sito ufficiale degli sviluppatori android ci sonoa lcuni tutorial che spiegano abbastanza decentemente cosa servono i vari metodi, ci hai dato un occhio?
-
Quote:
Originariamente inviato da
Andrea
Tutte le tue richieste sono piu o meno tutte riguardanti a java..
Infatti, tranne per la setContentView tutte le tue domande sono per java. Secondo me ti conviene leggere in giro cos'è un package e come si programma un pochino in java..
Io non ho mai studiato un piffero di java e tral'altro sono riuscito a scrivere codice per android.. Perciò non perdere le speranze.. Ti serve solamente capire come funziona il java..
Inoltre sul sito ufficiale degli sviluppatori android ci sonoa lcuni tutorial che spiegano abbastanza decentemente cosa servono i vari metodi, ci hai dato un occhio?
Ho visto Hello World, ed è da li che mi sono nate alcune perplessità. Ora sto proseguendo con gli altri tutorial, alcune cose si chiariscono per strada, ma alcuni dei miei dubbi li ho ancora...
-
Quote:
Originariamente inviato da
Andrea
Tutte le tue richieste sono piu o meno tutte riguardanti a java..
Infatti, tranne per la setContentView tutte le tue domande sono per java. Secondo me ti conviene leggere in giro cos'è un package e come si programma un pochino in java..
Io non ho mai studiato un piffero di java e tral'altro sono riuscito a scrivere codice per android.. Perciò non perdere le speranze.. Ti serve solamente capire come funziona il java..
Inoltre sul sito ufficiale degli sviluppatori android ci sonoa lcuni tutorial che spiegano abbastanza decentemente cosa servono i vari metodi, ci hai dato un occhio?
Scusa ma, se non conoscevi minimamente java, poi cosa hai fatto? Lo hai studiato? Da che fonti?
-
Sincermante no l'ho studiato.. Ho imparato semplicemente a tentoni.. Poi ogni tanto mi informavo ( Tipo cercavo su google cosa era un package ecc)
Insomma procedevo a tentativi.. Fa schifo da dire ma non avevo il tempo per studiarmi decentemente java cosi ho deciso di impararlo onthefly
-
Quote:
Originariamente inviato da
Andrea
Sincermante no l'ho studiato.. Ho imparato semplicemente a tentoni.. Poi ogni tanto mi informavo ( Tipo cercavo su google cosa era un package ecc)
Insomma procedevo a tentativi.. Fa schifo da dire ma non avevo il tempo per studiarmi decentemente java cosi ho deciso di impararlo onthefly
io mi sono messo a vedere basi di java, alcune cose si chiariscono molto...altre ancora no...sono un tipo paziente...vediamo come procede...
-
Beh non so se sono ancora in tempo, ma provo a rispondere io alle tue perplessità! Cominciamo in ordine numerico come hai fatto tu :
#1. Il package non è altro che l'insieme di tutte le classi presenti nell'apk.
#2. Non è proprio giusto definirle librerie, potresti usare la stessa definizione usata in c ' #include ', ma sono semplicemente delle altre classi importate nel package della tua apk.
#3. Si giusto.
#4. Un override è un sovrascrittura di un codice già implementato, nel tuo caso stai stai ri-implementando il costruttore della classe Activity, che ovviamente è stato ereditato dalla classe HelloAndroid che estende Activity.
#5. Si è giusto quello che dici, ma java quando è nato ha creato anche delle convenzioni.. per farti capire ad esempio ha detto che tutti i package devono iniziare per lettera minuscola, le classi per lettera maiuscola, ecc ecc.. e in una convenzione dice che tutti i costruttori delle classi devono essere public.
#6. super(); non fa nient'altro che richiamare il costruttore della classe, ad esempio se crei due costruttori di una classe qualsiasi, uno dei quali non riceve alcun parametro e l'altro che riceve due paramentri ad esempio interi, puoi richiamare entrambi i costruttori scrivendo super(); e super(int x, int y); l'interprete (in gergo a volte chiamato compilatore) capisce a tempo di esecuzione di quale costruttore si tratta in base ai parametri passati.
Alla seconda domanda del punto 6 posso semplicemente risponderti in questo modo: hai mai sentito parlare di ricorsione? (scusa se non ti spiego cosa è, ma non è per niente semplice in qualche riga.)
#7. Devi sempre scrivere il tipo dell'oggetto che vuoi creare, quella è come una dichiarazione di una variabile in c, l'interprete deve sapere che oggetto sta utilizzando! Ti faccio capire meglio.. Immagina di avere una superclasse FigureGeometriche e tutte le sue sotto classi Triangolo,Quadrilatero ecc ecc..
Se istanzi un oggetto t = new FigureGeometriche(); (apparte che è sintatticamente scorretto e ti da errore) l'interprete non può sapere di che oggetto ha a che fare, proprio perchè dopo new puoi mettere qualsiasi costruttore delle classi superiori, ma l'oggetto può benissimamente essere un oggetto di qualsiasi sottoclasse. Quindi è corretto scrivere sia: Triangolo t = new FigureGeometriche(); sia: Triangolo t = new Triangolo();. Spero di essere stato chiaro in quest'ultimo passaggio..
#8. Perfetto.
#9. Immagina setContentView come la printf in c. E' una delle tantissime procedure (in gergo a volte chiamate funzioni :P) di java per stampare a video.
Spero di essere stato d'aiuto, sia a te che a qualche altro.
Ciao alla prossima! ;)