2016-06-22 4 views
2

저는이 문제를 거의 일주일에 해결하려고했지만 왜 이런 일이 벌어지고 있는지 아직 잘 모릅니다.Searchview에 여분의 onBackPressed가 필요합니다.

public boolean onQueryTextChange(String newText) { 
    if(newText.length()==0) { 
     if(!(getSupportFragmentManager().findFragmentById(R.id.routesFragment) instanceof Fragment_Search)) { 
      fragment_search = new Fragment_Search(); 
      replaceFragment(fragment_search); 
     } 
    } 

    if (newText.length()>0){ 
     final DatabaseAccess databaseAccess = DatabaseAccess.getInstance(getApplicationContext()); 
     databaseAccess.open(); 
     ArrayList<Route_Common> list = databaseAccess.searchInDB(newText); 
     databaseAccess.close(); 
     fragment_search.listChanged(list); 
    } 

    return false; 
} 

그래서, searchview가 확장 될 때 나는 특별한 Search_fragment와 현재의 단편을 대체 : 나는 OnQueryTextListener (와 Searchview)가 있습니다. 초를 붕괴하고 처음 - - 다시 가고 내 searchview을 숨기고 내 이전 조각으로 돌아가려면

public void onBackPressed() { 
    if (!searchView.isIconified()) { 
     searchView.setIconified(true); 
     onBackPressed(); 
    } 
    super.onBackPressed(); 
    drawerToggle.setDrawerIndicatorEnabled(true); 
} 

는, 나는 두 번 눌러야합니다. searchView.clearFocus() 프로그래밍 방식으로 시도하고 두 번 onBackPressed()를 호출하지만 여전히 작동하지 않습니다. 어쩌면 정말 바보 같은 질문 일지 모르지만 나는 정말로 도움이 될 것입니다.

답변

0

마지막으로 해결책을 찾았습니다. 방금 추가했습니다.

searchView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { 
    @Override 
    public void onViewAttachedToWindow(View v) { 
     Log.d("MyTag","Search Expanded"); 
     fragment_search = new Fragment_Search(); 
     replaceFragment(fragment_search); 
    } 

    @Override 
    public void onViewDetachedFromWindow(View v) { 
     Log.d("MyTag","Search Hide"); 
     onBackPressed(); 
     } 
}); 
관련 문제