【问题标题】:can not close search box in actionBar无法关闭 actionBar 中的搜索框
【发布时间】:2014-02-15 02:14:55
【问题描述】:

我的 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);
    } 
}

【问题讨论】:

    标签: android android-fragments android-actionbar


    【解决方案1】:

    首先,是的啤酒!

    其次,你试过了吗:

    searchView.collapseActionView();
    

    我正在做一些事情来折叠 SearchView,并在 onTabSelected() 中调用了 collapseActionView(),这对我有用。所以如果你使用标签,你可以尝试一下。

    干杯!

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

    【讨论】:

    • 其实有collapseActionView方法的不是搜索视图,而是菜单项。在上面的代码中,菜单项是 menu.findItem(R.id.menu_search2) 的返回值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多