首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在change FragmentTab上关闭ActionMode

如何在change FragmentTab上关闭ActionMode
EN

Stack Overflow用户
提问于 2012-10-11 02:34:25
回答 1查看 782关注 0票数 2

我正在使用ActionBarSherlock和FragmentTabs,就像在FragmentTabs演示中一样。从我的ActionMode打开不同的FragmentTab时,如何关闭TabHost。

关于derjens

指向ActionBarSherlock演示的链接:FragmentTab.java / Tab LoaderCursorSupport.java

下面是我的ActionMode中的代码:

代码语言:javascript
复制
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
  selectedRowId = id;
  mMode = ((SherlockFragmentActivity) getActivity()).startActionMode(new TodoActionMode());
}

private final class TodoActionMode implements ActionMode.Callback {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            boolean isLight = DashboardActivity.THEME == R.style.Theme_Sherlock_Light;

            MenuInflater inflater = mode.getMenuInflater();
            inflater.inflate(R.menu.todo_actionmode_menu, menu);

            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()) {
            case R.id.menu_todo_actionmode_remove:
                eintragLoeschen(selectedRowId);
                return true;
            case R.id.menu_todo_actionmode_new:
                neuerTask();
                return true;
            default:
                mMode.finish();
                return true;
            }
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {


            mMode = null;
        }
    }

private void eintragLoeschen(final long rowId) {

        //eigenen dialog erstellen
        final Dialog dialog = new Dialog(getActivity());
        dialog.setContentView(R.layout.projekttab_todolist_task_delete_dialog);
        dialog.setTitle(R.string.task_wirklich_loeschen_title);


        //OK und Abbrechen Button zuweisen
        Button dialogButtonAbbrechen = (Button) dialog.findViewById(R.id.button_abbrechen);
        Button dialogButtonOk = (Button) dialog.findViewById(R.id.button_ok);

        //wenn Button Abbrechen gedrueckt wurde
        dialogButtonAbbrechen.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                dialog.dismiss(); //schliese dialog
            }
        });

        //wenn Button Ok gedrueckt wurde        
        dialogButtonOk.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                //TODO Eintrag Löschen auf ArrayAdapter ändern
                Uri uri = ContentUris.withAppendedId(TodoTable.CONTENT_URI, todolist.get((int) rowId).getId());
                getActivity().getContentResolver().delete(uri, null, null);


                mAdapter.remove(todolist.get((int) rowId));
                mAdapter.notifyDataSetChanged();

                mMode.finish();
                dialog.dismiss();
            }
        });

        //zeige dialog
        dialog.show();
    }
EN

回答 1

Stack Overflow用户

发布于 2017-03-27 19:51:30

您可以通过像这样的viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout){ @Override public void onPageScrollStateChanged(int state) { if(ActionModeController.mActionMode != null) ActionModeController.mActionMode.finish(); } });调用addOnPageChangeListener来关闭actionmode

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12826060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档