Autore Topic: errore nel passaggio parametri  (Letto 471 volte)

Offline lucazap

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC-Magic
  • Sistema operativo:
    Ubuntu
errore nel passaggio parametri
« il: 09 Novembre 2011, 15:54:44 CET »
0
Ciao a tutti.
Ho un  main che lancia la Activity che mostrerò in seguito.
Se metto il "setResult" dentro la "onCreate" funziona tutto e i parametri mi tornano al main,
se invece passo da una nuova Intent non riesco piu a tornare al main (con i parametri restituiti)

ecco il codice della seconda Activity:
Codice (Java): [Seleziona]
public class LoremBase extends ListActivity {
 
        private String id_comune;
        private String nome_comune=null;
        private DatabaseHelper db;
        private static final int LOCAL_SEARCH_ID = Menu.FIRST+1;
        private static final int GLOBAL_SEARCH_ID = Menu.FIRST+2;
        TextView selection;
        ArrayList<String> items=new ArrayList<String>();
        Intent data;
        Activity a= this;
        Context c;

 
  protected void onDestroy() { 
    if(this.db!=null)this.db.close();
    ((SearchManager)getSystemService("search")).setOnCancelListener(null);
    super.onDestroy();
  }
 
  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    selection=(TextView)findViewById(R.id.selection);
   
   
    setTitle("Digita il nome del comune");
   // SearchManager localSearchManager = (SearchManager)getSystemService("search");    
    setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);        
    onNewIntent(getIntent());
   
    onSearchRequested();
    super.onCreate(icicle);
  }
 
 
  @Override
  protected void onNewIntent(Intent intent)
  {
    super.onNewIntent(intent);
    String str1 = intent.getAction();    
   
        /* Se ho premuto il tasto cerca */
    if ("android.intent.action.SEARCH".equals(str1))
    {
       
         ListAdapter adapter=null;
         String query=intent.getStringExtra(SearchManager.QUERY);
       
        if(items!=null)items.clear();
        DatabaseHelper databaseHelper = new DatabaseHelper(this);
        this.db=databaseHelper;
                Cursor cur = databaseHelper.getComune(query);
               
                cur.moveToFirst();
        while (cur.isAfterLast() == false) {          
                items.add(cur.getString(cur.getColumnIndex(Comuni_table.NOME)));
            cur.moveToNext();
        }
        cur.close();
       
        adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items);
        setListAdapter(adapter);
       
       
    }
    return;
   
  }
 
  @Override
 [b] public void onListItemClick(ListView parent, View v, int position, long id) {       
            Intent data = new Intent();
            data.putExtra("returnKey1", "Swinging on a star. ");
                setResult(RESULT_OK, data);
            finish();      
  }[/b]
   
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(Menu.NONE, LOCAL_SEARCH_ID, Menu.NONE, "Local Search")
            .setIcon(android.R.drawable.ic_search_category_default);
   
    menu.add(Menu.NONE, GLOBAL_SEARCH_ID, Menu.NONE, "Global Search")
            .setIcon(R.drawable.search)
            .setAlphabeticShortcut(SearchManager.MENU_KEY);
 
    return(super.onCreateOptionsMenu(menu));
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
      case LOCAL_SEARCH_ID:
        onSearchRequested();
        return(true);
     
      case GLOBAL_SEARCH_ID:
        startSearch(null, false, null, true);
        return(true);
    }

    return(super.onOptionsItemSelected(item));
  }
}


..il risultato è che, invece di tornare al main, mi torna alla onCreate della seconda activity.
Qualcuno può dirmi dove sbaglio.. rigrazio in anticipo!

Offline lucazap

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC-Magic
  • Sistema operativo:
    Ubuntu
Re:errore nel passaggio parametri
« Risposta #1 il: 09 Novembre 2011, 16:10:43 CET »
0
Ho sovrascritto il metodo finish:
Codice (Java): [Seleziona]
@Override
public void finish() {
    Intent data = new Intent();
    setResult(RESULT_OK, data);

    super.finish();
}

..dopo questa modifica, se premo il tasto "back", trovo i parametri nel main..
ma vorrei tornarci senza premere nulla :(

Offline lucazap

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC-Magic
  • Sistema operativo:
    Ubuntu
Re:errore nel passaggio parametri
« Risposta #2 il: 09 Novembre 2011, 17:43:42 CET »
0
Il problema è che ogni volta che faccio una ricerca col search passo da onCreate()
e quindi creo un nuovo intent..
dovrei distruggere il vecchio intent, ma come?
Mi sa che sto sbagliando qualcosa :(
Qualcuno, se ha voglia, potrebbe darmi una dritta?

Offline lucazap

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC-Magic
  • Sistema operativo:
    Ubuntu
Re:errore nel passaggio parametri
« Risposta #3 il: 09 Novembre 2011, 18:14:49 CET »
0
[ R I S O L T O ]
..mancavano
setOnDismissListener e setOnCancelListener