Search code examples
actionmode

contextual action mode only works for one time


i did a contextual action mode and it is working very well when i click on the options that i created but the problem is it the action mode only works for one time and to enable it again i have exit the app and run it again

here's my code

        Button.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {

                if (actionMode != null) {
                    return false;
                }

                actionMode = startActionMode(startActionMode);
                return true;
            }
        });
    }

    private ActionMode.Callback startActionMode = new ActionMode.Callback() {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {

            mode.getMenuInflater().inflate(R.menu.menu12, menu);
            mode.setTitle("choose your option");
            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.item1:
                    Toast.makeText(MainActivity.this, "item 1 pressed", Toast.LENGTH_SHORT).show();
                    mode.finish();
                    return true;
                case R.id.item2:
                    Toast.makeText(MainActivity.this, "item 2 pressed", Toast.LENGTH_SHORT).show();
                    mode.finish();
                    return true;
                default:
                    return false;

            }
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            startActionMode = null;

        }
    };
}

Solution

  • Simply instead of

    startActionMode = null;

    use

    actionMode = null;