【问题标题】:searchview loases focus on orientation changesearchview 不再关注方向变化
【发布时间】:2014-05-03 02:02:13
【问题描述】:

我在我的应用中使用带有操作栏和片段的 searchview。 searchview 在 portrate 模式下打开,当我们改变方向时它会关闭。如果 searchview 中存在任何文本,它将不会在方向更改时关闭。即使搜索视图为空,我也想在方向更改时保留搜索视图的状态。我该怎么做?我试过了

 setRetainInstance(true);

但它不起作用。请帮帮我。

【问题讨论】:

    标签: android fragment screen-orientation searchview


    【解决方案1】:

    我自己实现了它,因为 Android 似乎没有为我保存它。

        final String s = savedSearchString;
        if (s != null) {
            searchViewMenuItem.expandActionView(); // opens the action view
        }
    
        searchView.post(new Runnable() {
            @Override
            public void run() {
                searchView.setQuery(s, false); // sets the last search string on the view
            } 
        });
    

    'savedSearchString' 来自于 savedInstanceState。确保将搜索窗口的初始内容设置为 "" 而不是 null(默认),否则它不会重新打开空窗口。

    【讨论】:

      【解决方案2】:

      您可以创建一个布尔值。 当您打开 searchView 时,您将 boolean 设置为 true。 当您关闭 searchView 时,您将布尔值设为 false。

      在onCreate中,如果boolean = true,打开searchView。

      final SearchView searchView = (SearchView) itemSearch.getActionView();
          searchView.setQueryHint(Html
                  .fromHtml("<font color = #ffffff>Search...</font>"));
      
          searchView.setOnSearchClickListener(new OnClickListener() {
      
              @Override
              public void onClick(View v) {
                  //your code
              }
          });
      

      【讨论】:

      • 我找不到打开搜索视图的代码部分
      • 用于在 onCreateOptionsMenu() 方法之外实现 searchClickListener 我必须在我的类中实现哪个接口?
      • 把这个放在onCreateOptionsMenu中
      • 你可以把itemSearch.expandActionView()
      • 你放了吗:final MenuItem itemSearch = menu.findItem(R.id.action_search); ?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 2015-12-30
      • 1970-01-01
      相关资源
      最近更新 更多