Autore Topic: ereditarietà TextView  (Letto 707 volte)

Offline mangiare94

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
ereditarietà TextView
« il: 18 Marzo 2012, 18:37:00 CET »
0
ciao a tutti nel mio progetto ho creato una classe contenente le risorse,cioè ho inizializzato tutte le variabili e i componenti del layout come i button, che poi vengono utilizzate nelle classi che ne hanno bisogno.Il mio problema è che con le TextView e i button mi da errore in runtime.

questo è il logcat:
Codice: [Seleziona]
03-18 17:36:19.263: E/AndroidRuntime(746): FATAL EXCEPTION: main
03-18 17:36:19.263: E/AndroidRuntime(746): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.madfinger.asciolla/com.madfinger.asciolla.Gioco1AndroidActivity}: java.lang.NullPointerException
03-18 17:36:19.263: E/AndroidRuntime(746):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
03-18 17:36:19.263: E/AndroidRuntime(746):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
03-18 17:36:19.263: E/AndroidRuntime(746):         at android.app.ActivityThread.access$2300(ActivityThread.java:125)
03-18 17:36:19.263: E/AndroidRuntime(746):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
03-18 17:36:19.263: E/AndroidRuntime(746):         at android.os.Handler.dispatchMessage(Handler.java:99)
03-18 17:36:19.263: E/AndroidRuntime(746):         at android.os.Looper.loop(Looper.java:123)
03-18 17:36:19.263: E/AndroidRuntime(746):         at android.app.ActivityThread.main(ActivityThread.java:4627)
03-18 17:36:19.263: E/AndroidRuntime(746):         at java.lang.reflect.Method.invokeNative(Native Method)
03-18 17:36:19.263: E/AndroidRuntime(746):         at java.lang.reflect.Method.invoke(Method.java:521)
03-18 17:36:19.263: E/AndroidRuntime(746):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-18 17:36:19.263: E/AndroidRuntime(746):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-18 17:36:19.263: E/AndroidRuntime(746):         at dalvik.system.NativeStart.main(Native Method)
03-18 17:36:19.263: E/AndroidRuntime(746): Caused by: java.lang.NullPointerException
03-18 17:36:19.263: E/AndroidRuntime(746):         at android.app.Activity.findViewById(Activity.java:1637)
03-18 17:36:19.263: E/AndroidRuntime(746):         at com.madfinger.asciolla.Risorse.<init>(Risorse.java:21)
03-18 17:36:19.263: E/AndroidRuntime(746):         at com.madfinger.asciolla.Gioco1AndroidActivity.<init>(Gioco1AndroidActivity.java:26)
03-18 17:36:19.263: E/AndroidRuntime(746):         at java.lang.Class.newInstanceImpl(Native Method)
03-18 17:36:19.263: E/AndroidRuntime(746):         at java.lang.Class.newInstance(Class.java:1429)
03-18 17:36:19.263: E/AndroidRuntime(746):         at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
03-18 17:36:19.263: E/AndroidRuntime(746):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
03-18 17:36:19.263: E/AndroidRuntime(746):         ... 11 more
« Ultima modifica: 18 Marzo 2012, 18:58:29 CET da mangiare94 »

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:ereditarietà TextView
« Risposta #1 il: 18 Marzo 2012, 19:28:05 CET »
0
Serve vedere il codice.
Comunque l'hai fatto il setContentView? E l'hai fatto prima delle findViewById?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline mangiare94

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
Re:ereditarietà TextView
« Risposta #2 il: 18 Marzo 2012, 19:57:33 CET »
0
questa è la classe principale :
Codice (Java): [Seleziona]
public class Gioco1AndroidActivity extends Activity {
Risorse b=new Risorse();

public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);  
       setContentView(R.layout.main);

b.textView.setText(Integer.toString(1000));
}}

questa è la classe che si occupa di inizializzare le risorse:
Codice (Java): [Seleziona]
public class Risorse extends Activity {

public  TextView textView;
public Risorse(){
setContentView(R.layout.main);
   textView=(TextView)findViewById(R.id.text);
}}

vorrei sapere perchè non funziona credo sia legato comunque al findViewByid
« Ultima modifica: 18 Marzo 2012, 20:41:44 CET da mangiare94 »

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:ereditarietà TextView
« Risposta #3 il: 18 Marzo 2012, 22:13:18 CET »
0
Suppongo che il problea stia nel fatto che non puoi utilizzare un'Activity in questo modo.
In particolare non ha senso l'implementazione di Risorse per come è pensata una Activity, che comunque non va istanziata in questo modo:

Codice (Java): [Seleziona]
 Risorse b=new Risorse();
Se hai bisogno di inizializzare/istanziare/findare risorse fallo nell'onCreate o nell'onResume dell'Activity che contiene/utilizza queste risorse.