Beim Starten des Aktionsmodus für die aktuelle Aktivität wird die Aktionsleiste hinter dem Dialogfeld angezeigt, so dass auf sie nicht zugegriffen werden kann, ohne sie zu verwerfen.
Nach mehreren Versuchen, dies zu vermeiden, habe ich einen Blick auf die source code of AppCompatActivity
hatte, und schaffte es, eine Lösung zu finden (was für mich gearbeitet):
ein Feld Angelegt,
private AppCompatDelegate delegate;
onStart
overrode wie folgt aus:
@Override
public void onStart() {
super.onStart();
Dialog dialog = getDialog();
if (dialog != null) delegate = AppCompatDelegate.create(dialog, this);
}
und erstellt einen Aktionsmodus Starter Methode
@Nullable
public ActionMode startSupportActionMode (ActionMode.Callback callback) {
if (delegate != null) return delegate.startSupportActionMode(callback);
return null;
}
Es kann auch onCreateDialog
zwingende arbeiten und die Delegierten dort zu schaffen, sondern von der Quelle der DialogFragment
die getDialog
Methode sollte die gleiche (aktuelle) Dialoginstanz auf onStart
zurückkehren, so ist es in Ordnung, ist die Schaffung von Delegieren Sie dort.
das scheint gut zu funktionieren für api level '11 +', aber da 'startActionMode' zu' View' in '11' hinzugefügt wurde, wird es für Level darunter fehlschlagen. – trooper
... also suche ich immer noch nach einem 'startSupportActionMode' aus meinem DialogFragment für ältere apis. Ich kann '((AppCompatActivity) getActivity()). StartSupportActionMode' verwenden, aber die CAB erscheint hinter dem Dialog (und ist nicht zugänglich, bis das Dialogfeld geschlossen wird). – trooper