私は、リストビューとclickeableアイテムを持つアクティビティを持っており、それぞれのアクティビティを個別のアクティビティに表示します。私の主な活動は、これらの項目をフィルタリングするSearchViewを持っています。私はアイテムをクリックすることができるようにしたい(開いている新しいアクティビティ)、私は戻るボタンを押すと、私のsearchViewは(フィルタリングされたリストで)同じままです。アクティビティを再開した後、SearchViewでクエリを持続する
私はこのような私のsearchviewを実装:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
// Inflate menu to add items to action bar if it is present.
inflater.inflate(R.menu.menu_main, menu);
final MenuItem searchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) searchItem.getActionView();
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Log.w("SEARCH", "SearchOnQueryTextSubmit: " + query);
mQuery = query;
if (!mSearchView.isIconified()) {
mSearchView.setIconified(true);
}
searchItem.collapseActionView();
return false;
}
@Override
public boolean onQueryTextChange(String s) {
Log.w("SEARCH", "SearchOnQueryTextChanged: " + s);
mQuery = s;
contactAdapter.getFilter().filter(s);
return false;
}
});
と私はmQueryが何かを持っていたかどうかを確認するためにonResumeに、または同じonCreateOptionsMenuに何かを実装しようとしていました。
if (!TextUtils.isEmpty(mQuery)) {
final String thisQuery = mQuery;
mSearchView.post(new Runnable() {
@Override
public void run() {
Log.d(TAG, "onResume: setting mQuery to searchView");
Log.d(TAG, "mQuery: "+thisQuery);
MenuItemCompat.expandActionView(searchItem);
mSearchView.setQuery(thisQuery, true);
}
});
}
両方の方法で試しましたが、成功しませんでした。 onCreateOptionsMenuで、もし私がそれをデバッグすると、SearchViewは私のクエリをフィルタリングするために呼び出されますが、その直後に別のコールが空の検索になります!私はこれがどこから来るのか分かりません。
助けが必要ですか?ありがとう!
ここで選択した回答を確認してください - これはあなたが探しているようです。 [活動の前の状態を維持する方法](http://stackoverflow.com/questions/9147981/how-to-maintain-the-previous-state-of-an-activity)。 – ishmaelMakitla
驚くばかり!ありがとう、私は正しいことをマークすることができるように答えとしてそれを書いてください。 – Nacho
私はあなたのために働く提案がうれしいです - 私はあなたが示唆したように答えとしてそれを書いています。 – ishmaelMakitla