Autore Topic: Problema Costruttori  (Letto 351 volte)

Offline MarcoMarco

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
Problema Costruttori
« il: 12 Giugno 2016, 14:32:23 CEST »
0
Salve a tutti

Ultimamente programmando Android mi sono imbattuto in un problema che probabilmente è una sciocchezza ma che non sto riuscendo a risolvere

In poche parole ho voluto creare una variabile privata di tipo stringa che doveva cambiare tramite un costruttore (il tutto fatto nel metodo oncreate) quindi una cosa molto semplice, ma non sono riuscito nell'intento


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

    TextView t;

   private String stringa="ciao";

    public MainActivity(){}


    public MainActivity(String stringax){
        stringa=stringax;
    }

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

        t=(TextView) findViewById(R.id.textView);
        t.setText(stringa);


        Toast.makeText(this,stringa,Toast.LENGTH_SHORT).show();

        String s ="stringa cambiata";
        new MainActivity(s);

        t=(TextView) findViewById(R.id.textView);
        t.setText(stringa);
        Toast.makeText(this,stringa,Toast.LENGTH_SHORT).show();








    }
}

Qualcuno di voi saprebbe dirmi perchè non riesco a cambiare il valore della stringa ?

Vi ringrazio in anticipo per le risposte

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Problema Costruttori
« Risposta #1 il: 12 Giugno 2016, 20:04:39 CEST »
+1
Tutto quello che fai è sbagliato. Non esiste costruttore nelle activity. Si programma in java ma ci sono cose totalmente di android

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 717
  • Respect: +151
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Problema Costruttori
« Risposta #2 il: 13 Giugno 2016, 10:46:45 CEST »
+1
Alcune classi (come Application, Activity ed altre) sono gestite dal sistema operativo che le istanzia e le distrugge in base a cicli di vita ben precisi.

Quello che è possibile fare è intercettare alcuni eventi (sempre messi a disposizione dal SO) per effettuare le nostre inizializzazioni.

Qui un grafico del ciclo di vita delle Activity, dal quale si evince che il momento migliore per effettuare un'inizializzazione come quella che vuoi fare tu è "onCreate".

Per passare dei parametri si usa un "bundle" passato al momento della richiesta di creazione dell'activity. Segue esempio:

Codice (Java): [Seleziona]
                Bundle bundle = new Bundle(); //Conterrà i parametri
                bundle.putString("PARAM1", "Primo parametro"); //Parametro 1
                bundle.putString("PARAM2", "Secondo parametro"); //Parametro 2
                Intent i = new Intent(this, MiaActivity.class); //Creo l'intent
                i.putExtras(bundle); //Imposto i parametri
                startActivity(i, 0); //Richiedo l'avvio dell'activity

i parametri si leggeranno così:

Codice (Java): [Seleziona]
@Override
        protected void onCreate(Bundle savedInstanceState) {
               
                super.onCreate(savedInstanceState);
               
                Bundle b = getIntent().getExtras();

                String param_1 = b.getString("PARAM1", null);
                String param_2 = b.getString("PARAM2", null);
               
        }
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline MarcoMarco

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
Re:Problema Costruttori
« Risposta #3 il: 18 Giugno 2016, 13:37:23 CEST »
0
Capito siete stati molto chiari Grazie  :-)