Ich habe gerade eine meiner Apps an die neuen v22.1.1-Support- und Appcompat-Bibliotheken angepasst. Weitere Informationen finden Sie hier und hier . Als ich einige Tests durchgeführt habe, war mit den von mir verwendeten ActionModes etwas nicht in Ordnung .
Wenn Sie einen ActionMode mit einem startSupportActionMode()
Aufruf starten - es spielt keine Rolle, ob Sie die jetzt veraltete ActionBarActivity- Basisklasse oder die neue AppCompatActivity- Basisklasse verwenden - onPrepareActionMode()
wird dieser nicht aufgerufen.
In früheren Versionen, einschließlich v21.0.3 und v22.0.0, onPrepareActionMode()
wurde automatisch aufgerufen, als der ActionMode ursprünglich mit erstellt wurde startSupportActionMode()
.
Ich habe es auf einem 2.2-, 4.4.2- und 5.0-Gerät getestet, daher scheint es nicht versionabhängig zu sein.
Weiß jemand, ob dies beabsichtigtes Verhalten ist, das in Version 22.1.1 eingeführt wurde, oder ein Fehler?
Ich habe dieses Problem gefunden , aber hier gibt es nicht viel Feedback ...
Bearbeiten 11. Mai 2015:
Wie im Android Issue Tracker 159527 erwähnt , betrifft dieses Problem nicht nur die Version 22.1.x von Appcompat und die Support-Bibliothek, sondern auch die 5.1-Android-Implementierung.
Derzeit zwei mögliche vorübergehende Lösungen, eine allgemeine:
@Override
public ActionMode startSupportActionMode(final ActionMode.Callback callback) {
// Fix for bug https://code.google.com/p/android/issues/detail?id=159527
final ActionMode mode = super.startSupportActionMode(callback);
if (mode != null) {
mode.invalidate();
}
return mode;
}
und eine "schnelle und schmutzige" (wenn Sie Ihren ActionMode instanziieren):
final ActionMode actionMode = startSupportActionMode(new MyActionMode());
if(actionMode != null) {
actionMode.invalidate();
}
Wenn Sie nicht appcompat verwenden ( ActionBarActivity
/ AppCompatActivity
) müssen Sie ersetzen startSupportActionMode()
mit startActionMode()
.
Leider ist immer noch nicht klar, ob dies ein neues Verhalten oder ein Fehler ist. Laut API-Dokument handelt es sich um einen Fehler / eine Regression, aber wer weiß ...