Visualizzazione stampabile
-
Quote:
Originariamente inviato da
Supergiox
Invece (non so se è il caso di aprire un altro post),
vorrei capire perchè si utilizza la parola chiave "final" per la TextView, se proprio questa verrà modificata (fatto sta che il programma funziona!), e invece il button non è final...
E poi non so a cosa serve l'istruzione @override.
La cosa grave è che non trovo risposta alle mie domande sui libri...
Ma guarda, sui final rimango un pochino perplesso anch'io, visto che quando programma in quel senso non li uso mai. La clausola final definisce in pratica una costante... è ben vero che una volta riempita con la relativa view non verrà mai cambiata, ma comunque trattandosi di una variabile non mi sembra proprio un uso rigoroso.
Ah, in realtà nel codice che hai esposto il TextView non viene modificato in modo che possa interessare all'attributo final. Trattandosi di una classe modificarlo violando la clausola final significherebbe assegnargli un altro puntatore di memoria che conserva i dati di quella classe. Invocare un metodo della classe, anche se modifica gli attributi, non modifica "l'area" di memoria in cui questi verranno scritti quindi non modifica il suo riferimento che è la TextView.
Ecco, come tutte le volte che mi metto a parlare di puntatori mi è venuto il vomitino... :-$
Override è solo un'annotazione, quindi facoltativa. Indica che il metodo che stai andando a scrivere è in realtà una riscrittura di un metodo già presente nella classe che stai estendendo, in particolare il metodo onCreate().
In pratica Activity ha già un suo onCreate (che puoi vedere nel javadoc), tu però lo riscrivi perché la classe che stai facendo ProjectLayoutActivity ha bisogno di un'implementazione diversa.
In questo caso particolare è una procedura standard nella scrittura di un'Activity android, in realtà può essere usata in diversi modi.
Volendo ci starebbe bene un override pure sopra
public void onClick(View v)
-
Anche a me non piacciono troppo i puntatori... e anzi in Java si usano meno che in C per fortuna :P Però bisogna ammettere che sono importanti perchè aiutano a capire il funzionamento interno...
Comunque se è come dici tu, cioè che un'oggetto final consente di modificarne gli attributi, va bene! é un pò meno chiara la scelta di usarlo da parte dell'autore, e la scelta di non usarlo in button... ma per ora va bene così! ;)
-
Quote:
Originariamente inviato da
Supergiox
Anche a me non piacciono troppo i puntatori... e anzi in Java si usano meno che in C per fortuna
Dai, concedimi di pignolare :p
In JAVA si usano come in C, però JAVA si occupa da solo di gestirli lasciando il programmatore un po' più tranquillo :p
-
Quote:
Originariamente inviato da
Cymon
Dai, concedimi di pignolare :p
In JAVA si usano come in C, però JAVA si occupa da solo di gestirli lasciando il programmatore un po' più tranquillo :p
Giusto! E se devo essere sincero mi aspettavo che qualcuno lo dicesse xD
-
ciao!!!Io sono al tuo stesso punto e sul
pressButton.setOnClickListener(new OnClickListener() {
mi da errore su OnClickListener()...Sai come mai? :S
https://www.androidiani.com/forum/le...klistener.html
-
Quote:
Originariamente inviato da
Ferri
Ad occhio manca la classe tra gli import...
-
package it.apogeo.cap03.resurcelayout;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class ResurceLayoutActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button pressButton = (Button) findViewById(R.id.pressButton);
final TextView outputView = (TextView) findViewById(R.id.output);
pressButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int counter = 0;
outputView.setText("Click # " + counter ++ );
}
});
}
}
Inserendola, queste sono le modifice aggiuntive che ho dovuto apportare! Ma il run comuque mi dice che che il mio project contiene errori. L esempio è a pag 65. Crisi nera :-X:-X:-X:-X:-X
-
Quote:
Originariamente inviato da
Ferri
package it.apogeo.cap03.resurcelayout;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class ResurceLayoutActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button pressButton = (Button) findViewById(R.id.pressButton);
final TextView outputView = (TextView) findViewById(R.id.output);
pressButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int counter = 0;
outputView.setText("Click # " + counter ++ );
}
});
}
}
Inserendola, queste sono le modifice aggiuntive che ho dovuto apportare! Ma il run comuque mi dice che che il mio project contiene errori. L esempio è a pag 65. Crisi nera :-X:-X:-X:-X:-X
Mi sembra di vedere uno spazio tra counter e ++, ma se ci dicessi che errosi sono sarebbe più facile...
Ribadisco che prima di buttarsi a pesce s android sarebbe caldamente consigliato farsi un po' le ossa sul java... ;)
-
Lo spazio non c'è, bug grafico! :)
Comuque hai ragione ma pensavo che questa guida illustrasse passo passo le operazioni, ma evidentemente mi trovo in difficoltà, anche perchè ho copiato pari pari il code e non vedo perchè dovrebbe darmi quell errore.
:-X
tu quella pagina come l hai passata?
-
Quote:
Originariamente inviato da
Ferri
Lo spazio non c'è, bug grafico! :)
Comuque hai ragione ma pensavo che questa guida illustrasse passo passo le operazioni, ma evidentemente mi trovo in difficoltà, anche perchè ho copiato pari pari il code e non vedo perchè dovrebbe darmi quell errore.
:-X
tu quella pagina come l hai passata?
Non ho usato il libbbbro ;)
Comunque il discorso è che la guida android (e molte guide android) danno java per scontato. E comunque (questo vale per TUTTI i testi di informatica da Turing* in poi) non ci si può mai fidare ciecamente di un listato stampato e sperare che non dia noie in compilazione.
In generale quando il codice si inceppa si tratta sempre di sciocchezze che uno sviluppatore java anche con pochi mesi di esperienza supera a pié pari e ignora, anche perché non riguardano quello che sta studiando.
Se però si accavallano le ovvie perplessità di android con le ovvie perplessità di java essendo entrambe cose nuove si va in cortocircuito.
In ogni caso non hai ancora detto che errore ti da :)
*Si, anche i testi di Turing. Ma lui faceva il figo perché nessuno aveva ancora trovato una macchina con nastri infiniti su cui compilare la sua roba**
**Roba tra cui c'era una versione preliminare di tetris, sembra. Ma i russi ti uccidono se lo dici in giro.