Comment mettre en œuvre le widget de recherche dans la Barre d'Action de Sherlock?
J'ai essayé de me zone de Recherche de travail sur l'Action de la Barre de Sherlock.
C'est mon PreLocationActivity
:
@ContentView(R.layout.search)
public class PreLocationActivity extends RoboSherlockActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.map_layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Used to put dark icons on light action bar
menu.add("Search")
.setIcon(R.drawable.ic_search_inverse)
.setActionView(R.layout.collapsible_edittext)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
return true;
}
@Override
public boolean onSearchRequested() {
return super.onSearchRequested();
}
}
C'est mon SearchableActivity
:
@ContentView(R.layout.search)
public class SearchableActivity extends RoboSherlockFragmentActivity {
@InjectView(R.id.addressListView) ListView addressView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Get the intent, verify the action and get the query
Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
doGeoSearch(query);
}
}
public void doGeoSearch(String query){
Geocoder geocoder;
ArrayList<Address> addresses;
ArrayList<String> address = new ArrayList<String>() ;
geocoder = new Geocoder(this, Locale.getDefault());
try {
addresses = (ArrayList<Address>) geocoder.getFromLocationName(query, 6);
Log.d("Address",String.valueOf(addresses));
for(int i = 0;i<addresses.size();i++)
{
String addr = new String();
addr.concat(addresses.get(i).getAddressLine(0));
addr.concat(addresses.get(i).getAddressLine(1));
addr = addresses.get(i).getAddressLine(0) + addresses.get(i).getLocality() + addresses.get(i).getAdminArea();
//addr.concat(addresses.get(i).getAddressLine(2));
Log.d("addr",addr);
address.add(addr);
}
SearchAddressAdapater addressList = new SearchAddressAdapater(getApplicationContext(),R.layout.search_list,addresses, SearchableActivity.this);
addressView.setAdapter(addressList);
//ListView addressListView = new ListView();
} catch (IOException e) {
//Handle exception
}
}
Sans succès, à tous. Comme, quand je tape quelque chose sur le Prelocation Activité et appuyez sur entrée, rien n'est en cours de recherche. Dois-je la considérer comme une EditText
et rédiger un texte d'écouteur pour ce qui appelle la geoCoder
et me met le lieux ou est-il une façon plus intelligente d'aller à ce sujet?
- Ici vous pouvez voir ma réponse à la même question: stackoverflow.com/a/21972031/2220495
InformationsquelleAutor Hick | 2012-07-27
Vous devez vous connecter pour publier un commentaire.
Android Support Library(v4 + v7):
Bibliothèque de prise en charge v7: http://developer.android.com/tools/support-library/features.html#v7-appcompat
Google prend désormais en charge le contrôle ActionBar compatibilité en arrière pour Android 2.1(API 7).
Il est facile de faire la transition parce que la méthode de même nom et/ou très similaires.
Ajouter le Support de la Bibliothèque de Ressources: http://developer.android.com/tools/support-library/setup.html#libs-with-res
Votre Manifeste: AndroidManifest.xml
Votre Menu: menu.xml
ActionBarSherlock [obsolète, utilisez appcompat]:
Voici comment utiliser la norme SearchView et SearchManager dans Android avec ActionBarSherlock! Je suis l'aide de ce code et fonctionne très bien. J'ai testé sur Android 2.3(API 10) - Android 4.3(API 18).
Bon Tutoriel et Documentation:
http://developer.samsung.com/android/technical-docs/UI-unification-with-older-Android-versions-using-ActionBarSherlock
Garder à l'esprit:
De Recherche personnalisé avec ActionBarSherlock(min. API 7)
SearchView avec ActionBarSherlock(min. API 8)
Votre Menu: menu.xml
Pour Les Deux:
Votre Activité: MainActivity.java
Laissez-moi savoir si cela fonctionne pour vous et laissez-moi savoir si vous avez besoin de plus d'aide!
return super.onCreateOptionsMenu(menu);
me donne une erreur. Il a besoin d'un deuxième paramètre un MenuInflater objet, mais je ne sais pas où je le conçois. Ce que je veux réaliser est différents menus dans les différents fragments.@drawable/ic_action_search
donne une "Aucune ressource trouvé d'erreur" pour moi. Cela peut-il avoir changé dans les dernières versions? (d'un autre côté, ne pas spécifier na icône donne une belle recherche par défaut de l'icône de toute façon).Une question similaire il y a ici, où j'ai eu le problème pour attribuer la carte.
Comment mettre en œuvre le widget de recherche avec une liste à l'aide de SherlockActionbar?
J'espère qu'il aidera parce que j'ai eu le même problème.
Utilisation de l'adaptateur de la meilleure façon, c'est que la classe implémente SearchView.OnQueryTextListener et puis vous n'avez pas à créer l'intérieur de la classe et vous aurez la carte.
Dans votre code sera quelque chose comme:
puis dans la classe que vous avez à définir les modalités. La carte est la carte que vous avez dans votre classe ArrayAdapter adaptateur. Mais vous devez le définir comme privé dans la classe.
Dans la ligne où vous êtes réglage:
Devrait être:
Si vous avez un problème, faites le moi savoir, j'étais avec un problème similaire d'aujourd'hui et de lire votre question sans réponse.