Autore Topic: Passare parametri da un'Activity ad una classe  (Letto 893 volte)

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Passare parametri da un'Activity ad una classe
« il: 13 Luglio 2014, 23:01:14 CEST »
0
Salve, avrei bisogno di passare il valore di un parametro intero creato dentro un activity, in una classe .java,dentro un altro package, che NON è un'activity allora ho creato un set/getter per l'intero:

Codice (Java): [Seleziona]
private int Num;
public int getNum() {
                return Num;
        }

        public void setNum(int Num) {
                this.Num = Num;
        }

Mentre l'altra classe estende l'activity, ma quando, in quest'ultima, chiamo getNum(), il suo valore è sempre 0.
Ad esempio se stampo Num, nell'activity il suo valore è 8, mentre nell'altra classe vale 0.

Quindi come faccio a passare correttamente un parametro intero da un'activity ad una classe ?
« Ultima modifica: 14 Luglio 2014, 10:49:05 CEST da Vincenzoz »
Vincenzo Cimino @ Google Play Store


iClaude

  • Visitatore
Re:Passare parametri da un'Activity ad una classe
« Risposta #1 il: 14 Luglio 2014, 10:43:31 CEST »
0
Nel metodo set devi fare
this.Num = Num

altrimenti fa confusione coi nomi uguali...

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:Passare parametri da un'Activity ad una classe
« Risposta #2 il: 14 Luglio 2014, 10:48:43 CEST »
0
Nel metodo set devi fare
this.Num = Num

altrimenti fa confusione coi nomi uguali...

Si, scusami inizialmente era scritto così, ho sbagliato io nel riscriverlo sul forum. Ma anche nella corretta maniera col "this" non cambia niente il valore rimane sempre 0  :-o
Vincenzo Cimino @ Google Play Store


iClaude

  • Visitatore
Re:Passare parametri da un'Activity ad una classe
« Risposta #3 il: 14 Luglio 2014, 10:51:44 CEST »
0
Allora devi postare tutto il codice incriminato, altrimenti non si capisce dov'è l'errore...

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:Passare parametri da un'Activity ad una classe
« Risposta #4 il: 14 Luglio 2014, 19:24:12 CEST »
0
Activity principale:

Codice (Java): [Seleziona]
public class MainActivity extends Activity {

        private int Num;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
                setNum(8);

                button1.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                            String input = "Intero("+getNum()+")";
                            Classe1 cl1 = new Classe1(input);
                        }
              });
       }
}

Classe a cui passo il tutto:

Codice (Java): [Seleziona]
public class Classe1 extends MainActivity {
       
        public Classe1(String input){  
                        System.out.println(input); // Intero(8)
                        System.out.println("Intero("+getNum()+")"); // Intero(0)
        }
}
Vincenzo Cimino @ Google Play Store


iClaude

  • Visitatore
Re:Passare parametri da un'Activity ad una classe
« Risposta #5 il: 14 Luglio 2014, 21:31:23 CEST »
0
C'è un motivo particolare per cui hai esteso MainActivity?
Da quel poco che ho capito mi sembra che la soluzione sia quella di creare una normale classe che non estende nulla (se non Object), al cui interno ci metti la variabile Num e i metodi set e get... :-\

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:Passare parametri da un'Activity ad una classe
« Risposta #6 il: 14 Luglio 2014, 22:44:10 CEST »
0
Principalmente, l'ho estesa perché così potevo utilizzare il metodo getNum()
Comunque intendi così ? :
Codice (Java): [Seleziona]
public class MainActivity extends Activity {

        Classe1 i;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                Button button1 = (Button) findViewById(R.id.button1);

               
                i.setNum(8);

                button1.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                            String input = "Intero("+i.getNum()+")";
                            i = new Classe1(input);
                        }
              });
       }
}

Codice (Java): [Seleziona]
public class Classe1 {
        private int Num;
        public Classe1(String input){  
                        System.out.println(input); // Intero(8)
                        System.out.println("Intero("+getNum()+")"); // Intero(0)
        }

        public int getNum() {
                return Num;
        }

        public void setNum(int Num) {
                this.Num = Num;
        }
}

Ma se faccio così, ottengo questa eccezione:

07-14 22:26:02.054: E/AndroidRuntime(29743): FATAL EXCEPTION: main
07-14 22:26:02.054: E/AndroidRuntime(29743): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fullconverter/com.example.fullconverter.MainActivity}: java.lang.NullPointerException
07-14 22:26:02.054: E/AndroidRuntime(29743):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at android.os.Looper.loop(Looper.java:130)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at android.app.ActivityThread.main(ActivityThread.java:3687)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at java.lang.reflect.Method.invokeNative(Native Method)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at java.lang.reflect.Method.invoke(Method.java:507)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at dalvik.system.NativeStart.main(Native Method)
07-14 22:26:02.054: E/AndroidRuntime(29743): Caused by: java.lang.NullPointerException
07-14 22:26:02.054: E/AndroidRuntime(29743):    at com.example.fullconverter.MainActivity.onCreate(MainActivity.java:188)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-14 22:26:02.054: E/AndroidRuntime(29743):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
07-14 22:26:02.054: E/AndroidRuntime(29743):    ... 11 more
Vincenzo Cimino @ Google Play Store


Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Passare parametri da un'Activity ad una classe
« Risposta #7 il: 14 Luglio 2014, 23:59:31 CEST »
0
Codice (Java): [Seleziona]
                i.setNum(8);
ComponentInfo{com.example.fullconverter/com.example.fullconverter.MainActivity}: java.lang.NullPointerException

Non mi è molto chiaro quello che stai cercando di fare, quale è il vero obiettivo finale.

Tu stai lanciando un metodo i.setNum(8) su un oggetto i non ancora instanziato. Di qui il NPE.

Tra le altre cose tu all'interno del costruttore, stai facendo un getNum(), il che avrebbe senso solo se la variabile fosse inizializzata prima.

Codice (Java): [Seleziona]
public class Classe1 {
        private int Num;
        public Classe1(String input){  
                        System.out.println(input); // Intero(8)
                        System.out.println("Intero("+getNum()+")"); // Intero(0)
        }


Quel getNum restuisce 0 (e lo restituirà  sempre) poichè la variabile num non è stata valorizzata.

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Passare parametri da un'Activity ad una classe
« Risposta #8 il: 15 Luglio 2014, 08:05:06 CEST »
0
Prima di fare:

Codice (Java): [Seleziona]
i.setNum(8);
Devi creare una nuova istanza del tuo oggetto.
I numeri contano molto di più del seme.

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:Passare parametri da un'Activity ad una classe
« Risposta #9 il: 15 Luglio 2014, 09:43:08 CEST »
0
Si, ho instanziato prima l'oggetto e non da eccezioni, adesso  :-)

Quel getNum restuisce 0 (e lo restituirà  sempre) poichè la variabile num non è stata valorizzata.

Ed è proprio questa la mia domanda, come faccio a passargli il valore che ho assegnato a Num nell'activity, alla classe dove non viene assegnato nessun valore a Num ?
Vincenzo Cimino @ Google Play Store


Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Passare parametri da un'Activity ad una classe
« Risposta #10 il: 15 Luglio 2014, 10:07:56 CEST »
0
Il getNum all'interno del costruttore ti darà sempre zero.

Ma se instanzi l'oggetto, fai setNum e poi getNum ti ritorna il valore appena impostato.
I numeri contano molto di più del seme.

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:Passare parametri da un'Activity ad una classe
« Risposta #11 il: 15 Luglio 2014, 10:18:23 CEST »
0
Lo so, ma io non devo impostare il valore all'interno del costruttore, ma all'interno dell'activity e poi passarlo al costruttore
Vincenzo Cimino @ Google Play Store


Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Passare parametri da un'Activity ad una classe
« Risposta #12 il: 15 Luglio 2014, 10:22:05 CEST »
0
Non capisco cosa vuoi fare.

Hai creato un oggetto ed hai impostato num. Questo num lo vuoi passare nella costruzione di un'altra instanza di quell'oggetto.

Tutto questo per?
I numeri contano molto di più del seme.

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:Passare parametri da un'Activity ad una classe
« Risposta #13 il: 15 Luglio 2014, 10:55:52 CEST »
0
Più semplicemente, ho bisogno di:

- Creare un parametro (con annessi set e get) di nome Num nella MainActivity
- Settare il valore di Num nell'Oncreate()
- Passare il valore (precedentemente settato nell'Oncreate) di Num al costruttore dell'altra classe
- Ed elaborarlo secondo quello che fa' quest'ultima classe
Vincenzo Cimino @ Google Play Store


Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Passare parametri da un'Activity ad una classe
« Risposta #14 il: 15 Luglio 2014, 11:31:01 CEST »
0
Beh allora passi il num nel costruttore e li dentro fai this.num = num
I numeri contano molto di più del seme.