2016-12-28 112 views
1

我在HomeScreen中包含SearchView。我使用SearchView进行地点搜索。这是我的HomeScreen截图: enter image description hereSearchView和BackPress事件处理

这是我在onCreateOptionsMenu方法代码:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    menu.clear(); 
    inflater.inflate(R.menu.home, menu); 
    searchItem = menu.findItem(R.id.menu_item_search_places); 
    searchItem.setIcon(FontIconDrawable.inflate(getContext(), R.xml.ic_search)); 
    searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 
    searchView.setOnSuggestionListener(this); 
    searchView.setOnQueryTextListener(this); 
    placesSearchAdapter = new PlacesSearchAdapter(this.getContext()); 
    searchView.setSuggestionsAdapter(placesSearchAdapter); 
    searchView.setMaxWidth(750); 
    MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() { 
     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      return true; 
     } 

     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      corLDriveInfoContainer.setVisibility(View.GONE); 
      fabDrivingDirection.setVisibility(View.VISIBLE); 
      mapView.deleteAllAnnotationsAndCustomPOIs(); 
      return true; 
     } 
    }); 
} 

这是我SearchView当我点击SearchIconenter image description here

这是我SearchView结果:

C. enter image description here

FabButton驱动选择的位置。

D. enter image description here

不过,我的问题是,如何回去View CView D当我按下后退按钮?

回答

1

您应该重写onBackPressed方法在你的活动这样

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    //change your View from D to C using the same code you used to go to D from C 
} 
1

我包括此解决我的问题onBackPress方法:

@Override 
public void onBackPressed() { 
    searchItem.expandActionView(); 
    searchView.setQuery("", false); 
    searchView.clearFocus(); 

    super.onBackPressed(); 
}