如何进行上一个活动的搜索视图后退按钮?

问题描述 投票:0回答:1

我有一个非常简单的问题。我已经在菜单中实现了searchview。因此,该活动从展开的searchview开始。现在,当我按下“后退”按钮时,搜索视图将首先折叠并返回上一个活动。

这是我的代码

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
    getMenuInflater().inflate(R.menu.menu_search, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    searchItem.expandActionView();
    SearchView mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    mSearchView.setQueryHint(getString(R.string.search_hint));
    mSearchView.setIconifiedByDefault(false);
    mSearchView.setFocusable(true);
    mSearchView.setIconified(false);
    mSearchView.requestFocus();
    mSearchView.setGravity(Gravity.END);
    mSearchView.setTextDirection(View.TEXT_DIRECTION_RTL);
    //mSearchView.setLayoutParams(new Toolbar.LayoutParams(Gravity.END));
    //String searchQuery = getIntent().getStringExtra("SEARCH");
    //SearchActivity.this.myAdapter.filter(searchQuery);
    TextView searchText = mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
    //searchText.setText(searchQuery);
    Typeface customFont = Typeface.createFromAsset(this.getAssets(), "fonts/font.ttf");
    searchText.setTypeface(customFont);
    try {
    ThaanaUtils.thaanafyTextViewSubclass(searchText, "fonts/faruma.ttf");
    }catch (IOException e){
        e.printStackTrace();
    }
    searchText.addTextChangedListener(new ThaanaTextWatcher());

    View xIcon = ((View) mSearchView.findViewById(R.id.search_plate));
    xIcon.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return true;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                SearchActivity.this.myAdapter.filter(newText);
                return true;
            }
        });

    MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() {
            @Override
            public boolean onMenuItemActionExpand(MenuItem item) {
                return true;
            }

            @Override
            public boolean onMenuItemActionCollapse(MenuItem item) {
                onBackPressed();
                return true;
            }
        });

    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.action_favorites) {
        //Intent newActivity = new Intent(SearchActivity.this,FavoritesActivity.class);
        //startActivity(newActivity);
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed()
{
    finish();
}



@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

但是我不想在按下后退按钮时显示searchview崩溃。我想回到以前的活动而不折叠searchview。我该如何实现?任何帮助表示赞赏。

java android
1个回答
0
投票

重写活动中的onBackPressed()方法,然后将活动重定向代码放入该方法中。这样可以解决您的问题。编码愉快!

@Override
public void onBackPressed() {
    // enter your activity redirection code here.
}

如果您没有在上一个活动中调用finish(),则只需在onBackPressed方法内调用finish()。这将破坏当前活动(搜索活动)并加载上一个活动。否则,您需要通过常规方法声明意图。

© www.soinside.com 2019 - 2024. All rights reserved.