Ciao...
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:
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
public void finish() {
Intent data = new Intent();
data.putExtra("returnKey1", "Swinging on a star. ");
setResult(RESULT_OK, data);
super.finish();
}
@Override
public void onListItemClick(ListView parent, View v, int position, long id) {
finish();
}
@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 problema è che i parametri passano e tornano al main..solo dopo aver premuto il tasto "back"... ovvero
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?
[ R I S O L T O ]
..mancavano
setOnDismissListener e setOnCancelListener