Autore Topic: Problema funzione e Id  (Letto 1095 volte)

Offline Kekko

  • Utente junior
  • **
  • Post: 88
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    W7
Problema funzione e Id
« il: 02 Gennaio 2012, 21:57:29 CET »
0
Ciao a tutti ragazzi  :D
Ho creato questa classe con questa funzione:
Codice (Java): [Seleziona]
public class Enigma extends EnigmAndroidActivity  {
       
        int nesimo;
        String risultato;
        int punteggiomax;
   
   
       
       
       
       
void ControlloRisultato(Context classe, int idtext, int idbutt){
        final EditText testorisultato=(EditText)findViewById(idtext);
        Button rispondi=(Button)findViewById(idbutt);
        final Toast toasterrato=Toast.makeText(classe, "Peccato,hai sbagliato!", Toast.LENGTH_SHORT );
        final Toast toastesatto=Toast.makeText(classe, "Complimenti,hai indovinato!", Toast.LENGTH_SHORT);
       
       
       
        rispondi.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (((testorisultato.getText()).toString()).equals(risultato)){
                        toastesatto.show();
                       
                       
                       
                }
                else {
               
                        toasterrato.show();
                       
                       
                }
       
           
            }
        });
       
 
}

Quando però provo ad utilizzarla in questo modo nella classe Enigma1 (ho dichiarato già un oggetto di tipo Engima (enigma1)):


Codice (Java): [Seleziona]
 enigma1.ControlloRisultato(Enigma1.this, R.id.editText1 ,R.id.button1);


Mi restituisce un NullPointerException con questo LogCat:
Codice: [Seleziona]
01-02 20:56:31.600: ERROR/AndroidRuntime(723): java.lang.RuntimeException: Unable to start activity ComponentInfo{enigm.android/enigm.android.Enigma1}: java.lang.NullPointerException
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at android.app.ActivityThread.access$1800(ActivityThread.java:112)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at android.os.Looper.loop(Looper.java:123)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at android.app.ActivityThread.main(ActivityThread.java:3948)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at java.lang.reflect.Method.invokeNative(Native Method)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at java.lang.reflect.Method.invoke(Method.java:521)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at dalvik.system.NativeStart.main(Native Method)
01-02 20:56:31.600: ERROR/AndroidRuntime(723): Caused by: java.lang.NullPointerException
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at android.app.Activity.findViewById(Activity.java:1616)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at enigm.android.Enigma.ControlloRisultato(Enigma.java:27)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at enigm.android.Enigma1.onCreate(Enigma1.java:40)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     ... 11 more



Dov'è l'errore? Non riesco proprio a capire cosa sbaglio :/
Grazie a tutti in anticipo :)
Kekko!

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Problema funzione e Id
« Risposta #1 il: 02 Gennaio 2012, 23:22:00 CET »
0
01-02 20:56:31.600: ERROR/AndroidRuntime(723): Caused by: java.lang.NullPointerException
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at android.app.Activity.findViewById(Activity.java:1616)
01-02 20:56:31.600: ERROR/AndroidRuntime(723):     at enigm.android.Enigma.ControlloRisultato(Enigma.java:27)

Alla riga 27 del file Enigma.java, quando viene richiamato il metodo ControlloRisultato della classe Enigma, viene generata una eccezione NullPointerException, quindi si sta tentando di accedere ad un riferimento con valore nullo. Controlla gli id che passi al metodo per determinare la EditText e il Button quando usi il metodo findViewById.

Offline Kekko

  • Utente junior
  • **
  • Post: 88
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    W7
Re:Problema funzione e Id
« Risposta #2 il: 02 Gennaio 2012, 23:31:32 CET »
0
Inizialmente ho pensato quello anch'io. Ho controllato e gli id sono esatti.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problema funzione e Id
« Risposta #3 il: 02 Gennaio 2012, 23:44:14 CET »
0
Ma dove viene fatto il setContentView?

Inizialmente ho pensato quello anch'io. Ho controllato e gli id sono esatti.

Comunque è quello.... il logcat non mente :D

Offline Kekko

  • Utente junior
  • **
  • Post: 88
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    W7
Re:Problema funzione e Id
« Risposta #4 il: 03 Gennaio 2012, 18:38:58 CET »
0
Il setContentView c'è :P  Non c'è nei source che ho postato :)
Comunque ora provo e vi faccio sapere ^^

Offline Kekko

  • Utente junior
  • **
  • Post: 88
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    W7
Re:Problema funzione e Id
« Risposta #5 il: 05 Gennaio 2012, 14:55:04 CET »
0
Niente, ho controllato gli id... Sono giusti.
Credo l'errore sia nella dichiarazione della funzione ma non riesco a capire qual'è!  :-\

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problema funzione e Id
« Risposta #6 il: 05 Gennaio 2012, 14:58:34 CET »
0
Il setContentView c'è :P

Io non ti ho chiesto se c'è, ti ho chiesto dov'è! :D

Offline Kekko

  • Utente junior
  • **
  • Post: 88
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    W7
Re:Problema funzione e Id
« Risposta #7 il: 06 Gennaio 2012, 22:16:32 CET »
0
Ah xD Scusa :P Ti posto la classe dove viene utilizzata la funzione ^^

Codice (Java): [Seleziona]
package enigm.android;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.content.Intent;
import android.widget.EditText;




public class Enigma1 extends Enigma{
        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.enigma1);
       
        //####################  BUTTON INDETRO, lo utilizzo perché c'è un menù, non dà errori
        Button button = (Button) findViewById(R.id.button2);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                   
                 Intent indietro = new Intent();
                 setResult(RESULT_OK, indietro);
                 finish();
                   
                       
                   
               
            }
        });
       
//###############################################################################DICHIARAZIONE ENIGMA
       
        Enigma enigma1=new Enigma();
        enigma1.risultato="speriamo";
       
       
       
        enigma1.ControlloRisultato(Enigma1.this, R.id.controllo1 ,R.id.bottone1);
       




}
}
Ecco qui  :-)
Grazie dell'aiuto che mi state dando ^^

Offline Kekko

  • Utente junior
  • **
  • Post: 88
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    W7
Re:Problema funzione e Id
« Risposta #8 il: 11 Gennaio 2012, 16:49:12 CET »
0
Up!

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Problema funzione e Id
« Risposta #9 il: 11 Gennaio 2012, 19:09:47 CET »
0
Ma Enigma è una Activity ?

Codice (Java): [Seleziona]
Enigma enigma1=new Enigma();
Creare una Activity in questo modo non è cosa buona e giusta... O:-)

Offline Kekko

  • Utente junior
  • **
  • Post: 88
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    W7
Re:Problema funzione e Id
« Risposta #10 il: 11 Gennaio 2012, 22:34:26 CET »
0
Enigma é una classe per la creazione di un nuovo tipo mentre enigma1 é un Activity che eredita Enigma e crea una variabile di tipo Enigma.
Probabilmente non ero stato chiaro :) spero che con questi elementi possiate aiutarmi :P
« Ultima modifica: 11 Gennaio 2012, 22:45:26 CET da Kekko »

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Problema funzione e Id
« Risposta #11 il: 12 Gennaio 2012, 12:53:22 CET »
0
Kekko,
forse la sparo grossa ma nel dubbio. :-P

Allora nel seguente codice:
Citazione
void ControlloRisultato(Context classe, int idtext, int idbutt){
        final EditText testorisultato=(EditText)findViewById(idtext);
        Button rispondi=(Button)findViewById(idbutt);
Tu passi un context , ma poi dove lo usi ?
Non dovresti usarlo per inizializzare testorisultato e rispondi ?
Scusami se ti sto confondendo le idee.
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Kekko

  • Utente junior
  • **
  • Post: 88
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    W7
Re:Problema funzione e Id
« Risposta #12 il: 12 Gennaio 2012, 16:38:23 CET »
0
Il context lo utilizzo per la notofica Toast, purtroppo non é quello l'errore :(
Comunque grazie per averci provato :D

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Problema funzione e Id
« Risposta #13 il: 12 Gennaio 2012, 16:56:51 CET »
0
Posta la classe Enigma e il layout R.layout.enigma1

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Problema funzione e Id
« Risposta #14 il: 12 Gennaio 2012, 19:04:37 CET »
0
Citazione
Enigma é una classe per la creazione di un nuovo tipo mentre enigma1 é un Activity che eredita Enigma e crea una variabile di tipo Enigma.

No. dal codice che hai postato tu enigma1 è una istanza della classe Enigma. La classe Enigma1 estende Enigma...ma dato che al suo interno hai fatto l'override del metodo
public void onCreate(Bundle savedInstanceState), significa che la classe Enigma estende Activity...altrimenti c'è qualcosa che non va :-)

Comunque se la risposta è si, Enigma estende Activity, creare una istanza di una classe che estende Activity come hai fatto tu non è la strada giusta secondo me...poichè le Activity si usano in altro modo.