1

私は、DialogFrament広く使用している ICS (4.0.3) タブレット アプリに取り組んでいます。ユーザーがテキスト エディター内でダイアログ フラグメントを長押しした場合、コピー/貼り付けアクション バーが画面の上部に表示されないようにする必要があります。幸いなことに、すべてのダイアログ フラグメントの基になっている独自の基本クラス拡張DialogFragment( と呼びます) があるので、必要に応じてそれを変更できます。MyOrgDialogFragment

私の最初の試みでは、 でオーバーライドしてから、その中でオーバーライドしOnCreateDialog()ました。MyOrgDialogFragmentonWindowStartingActionMode()

@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    return new Dialog(getActivity()) {
        @Override
        public ActionMode onWindowStartingActionMode(ActionMode.Callback callback)
        {
            return new ActionMode()
            {
                // [ All overrides empty ]
            }
        }
    };
}

これはほぼ機能します。アクションバーが表示されなくなり、編集フィールドを長押しすると選択ハンドルが引き続き表示されますが (これは問題ありません)、フォーカスを別の編集フィールドに移動すると、選択ハンドルが正しく閉じられません。 . 最終的に、選択を行った各編集フィールドの上に「ゾンビ」選択ハンドルが表示されます。

誰でもより良い解決策を教えてもらえますか?

4

1 に答える 1

4

/で使用できるsetCustomSelectionActionModeCallbackメソッドを見てください。次のように空を使用する場合:TextViewEditTextActionMode.Callback

private ActionMode.Callback mModeCallback = new Callback() {

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // TODO Auto-generated method stub

        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            // TODO Auto-generated method stub
            return false;
        }
    };

選択ActionModeはブロックされます (フィールドを切り替えるときに選択ハンドラーが残っていないため、実際にはまったく表示されません)。

于 2013-02-01T10:42:26.470 に答える