Bonjour

J'ai une action bar composée d'un search widget qui me permet pour le moment de faire une recherche et de lancer une nouvelle activity.
J'aimerai faire passer également des données lors du lancement de cette recherche. Ces données prennent la forme d'un ArrayList<Wallpaper> wallpapersList.
J'ai donc pour cela commencé par implements Parcelable à ma class Wallpaper.

Et d'après la doc (https://developer.android.com/guide/...ch-dialog.html) je pensai que la méthode onSearchRequested() était appelé pour chaque recherche effectuée avec le widget donc j'ai implémenté dans MainActivity.java cette méthode de cette façon pour faire passer mes données ArrayList en plus de ma recherche ainsi que le onCreate() pour initialiser mon action bar ce qui donne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.activity_main_actions, menu);
 
        // Associate searchable configuration with the SearchView
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
 
        return super.onCreateOptionsMenu(menu);
    }
 
    @Override
    public boolean onSearchRequested() {
         Bundle appData = new Bundle();
 
         appData.putParcelableArrayList("WALLP_ARRAY", wallpapersList);
 
         startSearch(null, false, appData, false);
         return true;
     }
Or la méthode onSearchRequested() n'ait jamais appelé. Donc mon arrayList n'est jamais passée à mon activity qui fait la recherche SearchResultsActivity.java ou je récupère les données échangées de cette façon :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
        Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);
        if (appData != null) {
            //boolean jargon = appData.getBoolean(SearchableActivity.JARGON);
        	wallpaperList = appData.getParcelableArrayList("WALLP_ARRAY");
        }

J'aimerai savoir si ma façon de faire est correcte ou si c'est pas du tout comme ça qu'il faut s'y prendre. Je ne comprend pas à quoi sert la méthode onSearchRequested() vu qu'elle n'est jamais appelée, donc impossible d'échanger mes données.

Je précise que le search widget fonctionne car quand je le test, que je met un string "test" dans le widget, que je lance la recherche ça m'ouvre bien ma nouvelle activité et je retrouve mon "test" string qui s'affiche dans un TextView que j'ai mis en place pour le moment.



Merci pour votre aide.