2014-02-15 25 views
1

我有我的android actionBar搜索圖標。當我在搜索片段中時,它會自動擴展並打開鍵盤進行搜索。無法關閉搜索框在行動條

當您搜索它時填充列表視圖,然後單擊一個項目加載一個新的片段。我正試圖關閉搜索框,當新的片段加載時,圖標回到只是圖標,所以鍵盤將消失,但它不工作。

我的打開和關閉應當在搜索框的片段代碼:

public class BeerPage extends Fragment { 

    public BeerPage(){} 

    String beerId = ""; 
    SearchView searchView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.beer_page, container, false); 
     setHasOptionsMenu(true); 
     getActivity().setTitle("Beer"); 

     //body code goes here 

     //get user information 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
     String userName = prefs.getString("userName", null); 
     String userID = prefs.getString("userID", null); 

     //get bundled data 
     Bundle args = getArguments(); 
     beerId = args.getString("beerIDSent"); 

     TextView bt = (TextView)rootView.findViewById(R.id.beerBreweryName); 
     bt.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // do whatever stuff you wanna do here 
       //todo: launch new brewery page 
       Fragment Fragment_one; 
       FragmentManager man= getFragmentManager(); 
       FragmentTransaction tran = man.beginTransaction(); 
       Fragment_one = new BreweryPage(); 
       final Bundle bundle = new Bundle(); 
       bundle.putString("beerIDSent", beerId); 
       Fragment_one.setArguments(bundle); 
       tran.replace(R.id.main, Fragment_one);//tran. 
       tran.addToBackStack(null); 
       tran.commit(); 
      } 
     }); 
     TextView bt2 = (TextView)rootView.findViewById(R.id.beerStyleName); 
     bt2.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // do whatever stuff you wanna do here 
       //todo: launch new brewery page 
       Fragment Fragment_two; 
       FragmentManager man= getFragmentManager(); 
       FragmentTransaction tran = man.beginTransaction(); 
       Fragment_two = new StylePage2(); 
       final Bundle bundle = new Bundle(); 
       bundle.putString("beerIDSent", beerId); 
       Fragment_two.setArguments(bundle); 
       tran.replace(R.id.main, Fragment_two);//tran. 
       tran.addToBackStack(null); 
       tran.commit(); 
      } 
     }); 

     Button bt3 = (Button)rootView.findViewById(R.id.buttonTasteTag); 
     bt3.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // do whatever stuff you wanna do here 
       //todo: launch new brewery page 
       Fragment Fragment_three; 
       FragmentManager man= getFragmentManager(); 
       FragmentTransaction tran = man.beginTransaction(); 
       Fragment_three = new TasteTags2(); 
       final Bundle bundle = new Bundle(); 
       bundle.putString("beerIDSent", beerId); 
       Fragment_three.setArguments(bundle); 
       tran.replace(R.id.main, Fragment_three);//tran. 
       tran.addToBackStack(null); 
       tran.commit(); 
      } 
     }); 

     String url = "http://api.brewerydb.com/v2/beer/"+ beerId +"?key=0cdb22f84315834cc807c0176a927060&format=json&withBreweries=y"; 

     new GetBeerDataJSON(getActivity(), beerId).execute(url); 

     return rootView; 
    } 

    @Override 
    public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     super.onCreateOptionsMenu(menu, inflater); 
     //inflater.inflate(R.menu.main, menu); 
     searchView = (SearchView) menu.findItem(R.id.menu_search2).getActionView(); 
     searchView.setIconified(true); 
    } 
} 

回答

0

首先,耶啤酒!

所有的二,你有沒有嘗試過:

searchView.collapseActionView(); 

我工作的事摺疊搜索查看和(稱爲collapseActionView()在onTabSelected),它爲我工作。所以你可以嘗試一下,如果你使用標籤。

乾杯!

http://developer.android.com/reference/android/view/MenuItem.html#collapseActionView()

+0

實際上,它是不是有方法collapseActionView搜索視圖,但菜單項。在上面的代碼中,菜單項是menu.findItem(R.id.menu_search2)的返回值。 – dschulten