2012-09-17 17 views
5

Durante la lettura del libro "Ciao, Android", ho notato che:public onCreate() o protected onCreate()?

ogni file java con onCreate(Bundle savedInstanceState) metodo, ha protetto modificatore di accesso se non nel principale attività del programma [che ha: public void onCreate(Bundle savedInstanceState)] .

Perché è il metodo publiconCreate sulla attività principale del programma, ma protected ovunque?

+0

è possibile utilizzare ** modificatore di accesso pubblico ** in tutte le attività .... –

+0

Puoi dirci che cosa ha fatto quel programma? –

+0

Grazie per le risposte veloci. – Soroor

risposta

0

Può anche essere protected. Non c'è nulla di importante o saggio in questo.

1

È possibile modificare la visibilità di un metodo. Quello che non si può fare è: ridurre la visibilità (fare un metodo pubblico privato), accedere ad un metodo privato (che lo rende pubblico)

2

il onCeate() è protetta in modo da evitare la chiamata di esso dall'oggetto attività.

MyActivity activity = new MyActivity(); 
activity.onCreate(args); // which doesn't make sense because activity is not yet created 

Poiché questo metodo viene chiamato solo quando l'attività viene creato, chiamando da soli sarà molto probabilmente vi darà un NullPointerException perché l'attività non è ancora creata. S/O Post

0

Non c'è alcun motivo per rendere pubblico il metodo (ma ciò non influisce su nulla). Non dovresti chiamarlo manualmente comunque.

A proposito Intellij IDEA dispone di modello di attività con il numero pubblico onCreate. Questo potrebbe essere il motivo per cui questo metodo è pubblico nel libro.