【问题标题】:How can I return to a parent activity correctly from Search activity which is launched from ActionBar SearchView.如何从 ActionBar SearchView 启动的 Search 活动正确返回到父活动。
【发布时间】:2013-11-08 08:08:09
【问题描述】:

我有两个活动MainActivitySearchActivitySearchActivity 是从 ActionBar 搜索 View 菜单项启动的。但是,如果我通过单击向上导航项返回MainActivityMainActivity 状态将丢失,我如何才能在不丢失MainActivity 状态的情况下返回主活动。

我的代码:MainActivity

   @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // If the nav drawer is open, hide action items related to the content view
        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerLinear );
        menu.findItem(R.id.action_websearch).setVisible(!drawerOpen);


        SearchItem= menu.findItem(R.id.action_search);
        SearchManager searchManager =
                (SearchManager) getSystemService(Context.SEARCH_SERVICE);
         SearchView searchView =
                 (SearchView) SearchItem.getActionView();

         searchView.setQueryRefinementEnabled(true);
         searchView.setSubmitButtonEnabled(true);
         searchView.setSearchableInfo(
                 searchManager.getSearchableInfo(getComponentName()));
  return super.onPrepareOptionsMenu(menu);
    }

我的代码:SearchActivity

  @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case android.R.id.home:
                NavUtils.navigateUpFromSameTask(this);
                return true;
  default:
                return super.onOptionsItemSelected(item);
            }
        }

如何在不重新创建 MainActivity 的情况下从 SearchActivity 返回到 MainActivity。

【问题讨论】:

    标签: android search android-activity android-actionbar parent


    【解决方案1】:

    当您从 SearchActivity 返回时,您可以将 MainActivity 的活动启动模式更改为单顶。这不会重新创建活动。查看here了解更多信息

     @Override
            public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                case android.R.id.home:
                   startActivity(new Intent(this, MainActivity.class)
                                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)//updated
                                        .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
                                );
                            }
                        });
                    return true;
                    default:
                    return super.onOptionsItemSelected(item);
                }
            }              
    

    【讨论】:

    • mainactivity 仍然在刷新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 2014-04-04
    • 1970-01-01
    相关资源
    最近更新 更多