Autore Topic: differenza putExtra con o senza apici  (Letto 752 volte)

Offline daniweb

  • Nuovo arrivato
  • *
  • Post: 30
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    galaxy s2
  • Sistema operativo:
    windows 7
differenza putExtra con o senza apici
« il: 31 Ottobre 2012, 18:50:02 CET »
0
ciao a tutti.
chi è cosi gentile da spiegarmi una cosa?

ho questo esempio legato ad un ImageButton:

Codice (Java): [Seleziona]
Intent c1 = new Intent(this, Prima.class);
    c1.putExtra(ProgettoTable.CODICE, Codice1);
    startActivityForResult(c1, ACTIVITY_CREATE);

nella classe Prima.class nell OnCreate ho
Codice (Java): [Seleziona]
if (extras != null)
{
      String Codice1 = extras.getString(ProgettoTable.CODICE);
      setTitle(Codice1);

      String CodicePrima = extras.getString(PrimaTable.CODICE);
      if (CodicePrima != null) { editCodicePrima.setText(CodicePrima );
}  


con questo codice quello che mi aspettavo è di avere il Codice1 sul titolo e CodicePrima nel EditText, invece ho  Codice1 sia sul titolo che sul EditText.

ho modifcato il codice aggiungendo le "
Codice (Java): [Seleziona]
Intent c1 = new Intent(this, Prima.class);
    c1.putExtra("ProgettoTable.CODICE", Codice1);
    startActivityForResult(c1, ACTIVITY_CREATE);

nella classe Prima.class nell OnCreate ho
Codice (Java): [Seleziona]
if (extras != null)
{
      String Codice1 = extras.getString("ProgettoTable.CODICE");
      setTitle(Codice1);

      String CodicePrima = extras.getString("PrimaTable.CODICE");
      if (CodicePrima != null) { editCodicePrima.setText(CodicePrima );
}  

facendo in questo modo mi mostra in maniera corretta Codice1 sul titolo e CodicePrima (se esiste) sul EditText.

qualcuno saprebbe spiegarmi qual'è la differenza tra (PrimaTable.CODICE); e ("PrimaTable.CODICE");
ho guardato sulla guida ma se devo essere sincero non ho capito.

grazie.

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:differenza putExtra con o senza apici
« Risposta #1 il: 02 Novembre 2012, 12:07:57 CET »
0
Posta il valore delle due costanti ProgettoTable.CODICE e PrimaTable.CODICE e scoprirai da solo l'arcano! ;)

Offline daniweb

  • Nuovo arrivato
  • *
  • Post: 30
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    galaxy s2
  • Sistema operativo:
    windows 7
Re:differenza putExtra con o senza apici
« Risposta #2 il: 02 Novembre 2012, 12:39:16 CET »
0
Posta il valore delle due costanti ProgettoTable.CODICE e PrimaTable.CODICE e scoprirai da solo l'arcano! ;)

ho provato a far questo:

pagina iniziale:
Codice (Java): [Seleziona]
i.putExtra("ProgettoTable.CODICE", c.getString(c.getColumnIndexOrThrow(ProgettoTable.CODICE)));
i.putExtra(ProgettoTable.CODICE, c.getString(c.getColumnIndexOrThrow(ProgettoTable.CODICE)));

pagina finale:
Codice (Java): [Seleziona]
Log.e("test prog", "codice :" + extras.getString(ProgettoTable.CODICE));
Log.e("test prog", "codice virogle :" + extras.getString("ProgettoTable.CODICE"));

il risultato è
11-02 12:45:58.100: E/test prog(5994): codice :qwe
11-02 12:45:58.100: E/test prog(5994): codice virogle :qwe

dovevo stampare il valore in altra maniera?
scusa ma sono ancora molto inesperto.

EDIT:
ho provato ad aggiungere
i.putExtra(PrimaTable.CODICE, "ciao");
e
Log.e("test prog", "codice stab :" + extras.getString(PrimaTable.CODICE));
il risultato è :
11-02 12:51:31.990: E/test prog(6055): codice :ciao
11-02 12:51:31.990: E/test prog(6055): codice virogle :qwe
11-02 12:51:32.000: E/test prog(6055): codice stab :ciao

credo di aver capito .
quello che mi aspettavo era che
PrimaTable.CODICE fosse il nome di una variabile dove ha una radice "PrimaTable" e il nome "CODICE"
diciamo una sorta di array.

mentre mi pare di capire che PrimaTable.CODICE  indica che deve usare come key la stringa associata a PrimaTable.CODICE.
dato che nelle due interfaccie
ProgettoTable e PrimaTable
ho
String CODICE = "codice";

significa che se scrivo
i.putExtra(ProgettoTable.CODICE, c.getString(c.getColumnIndexOrThrow(ProgettoTable.CODICE)));

è come scrivere

i.putExtra("codice", c.getString(c.getColumnIndexOrThrow(ProgettoTable.CODICE)));

è corretto?
« Ultima modifica: 02 Novembre 2012, 12:53:39 CET da daniweb »

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:differenza putExtra con o senza apici
« Risposta #3 il: 02 Novembre 2012, 13:35:23 CET »
0
Posta il valore delle due costanti ProgettoTable.CODICE e PrimaTable.CODICE e scoprirai da solo l'arcano! ;)

Forse mi sono espresso male: facci vedere il codice dove definisci ProgettoTable.CODICE e PrimaTable.CODICE (e scoprirai da solo l'arcano)! ;)

Offline daniweb

  • Nuovo arrivato
  • *
  • Post: 30
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    galaxy s2
  • Sistema operativo:
    windows 7
Re:differenza putExtra con o senza apici
« Risposta #4 il: 02 Novembre 2012, 15:30:27 CET »
0
Codice (Java): [Seleziona]
public interface ProgettoTable extends BaseColumns
{
        String TABLE_NAME = "progetto";
       
        String KEY_ID = "_id";
        String DATE = "data";
        [color=red]String CODICE = "codice";[/color]    String REVISIONE = "revisione";
        String TIPPRO = "tippro";
        String RAGSOC ="ragsoc";
        String INDIRI = "indiri";
        String CITTA = "citta";
        String PROV ="prov";
        String ANNOTA ="annota";
        String CONTAMM ="cont_amm";
        String CONTTEC ="cont_tec";

        String[] COLUMNS = new String[]
        { _ID, CODICE, REVISIONE, DATE, TIPPRO, RAGSOC, INDIRI, CITTA, PROV, ANNOTA, CONTAMM, CONTTEC };
       
        String DATABASE_CREATE =
                        "create table "+TABLE_NAME+" (_id integer primary key autoincrement, "
                +       CODICE+ " text not null,"
                +       REVISIONE+ " text not null,"
                +       DATE+ " text not null,"
                +       TIPPRO+ " text not null,"
                +       RAGSOC+ " text not null,"
                +       INDIRI+ " text not null,"
                +       CITTA+ " text not null,"
                +       PROV+ " text not null, "
                +       ANNOTA+ " text not null,"
                +       CONTAMM+ " text not null,"
                +       CONTTEC+ " text not null "
                +");";  
}

Codice (Java): [Seleziona]
public interface PrimaTable extends BaseColumns
{
        String TABLE_NAME = "prima";
        String KEY_ID = "_id";
        String PROGETTO =  "progetto";
        [color=red]String CODICE = "codice";[/color]
        String DESCRI = "descri";
        String[] COLUMNS = new String[]
        { _ID, PROGETTO, CODICE, DESCRI };
       
        String DATABASE_CREATE =
                        "create table "+TABLE_NAME+" (_id integer primary key autoincrement, "
                +       PROGETTO+ " text not null,"
                +       CODICE+ " text not null,"
                +       DESCRI+ " text not null "
                +");";  
}

questi sono i due codici.

come scrivevo prima penso di aver capito il motivo.
ero convinto che scrivere PrimaTable.CODICE fosse come accedere ad una specie di array e non alla stringa associata.
è corretto?

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:differenza putExtra con o senza apici
« Risposta #5 il: 02 Novembre 2012, 16:12:53 CET »
0
Esatto... in tutti e due i casi il valore e' "codice" quindi quando lo metti dentro un intent extra sovrascrivi il valore!