1
0
Fork 0
mirror of https://github.com/MatomoCamp/matomocamp-companion-android.git synced 2024-09-19 16:13:46 +02:00

Ensure the bookmarks ActionMode is closed when the fragment is destroyed.

This commit is contained in:
Christophe Beyls 2016-01-02 22:22:44 +01:00
parent ca71cc6bd9
commit d6f1de2aae
2 changed files with 20 additions and 7 deletions

View file

@ -64,6 +64,14 @@ public class BookmarksListFragment extends SmoothListFragment implements LoaderC
getLoaderManager().initLoader(BOOKMARKS_LOADER_ID, null, this);
}
@Override
public void onDestroyView() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
BookmarksMultiChoiceModeListener.unregister(getListView());
}
super.onDestroyView();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.bookmarks, menu);

View file

@ -8,14 +8,14 @@ import android.view.Menu;
import android.view.MenuItem;
import android.widget.AbsListView;
import android.widget.AbsListView.MultiChoiceModeListener;
import be.digitalia.fosdem.R;
import be.digitalia.fosdem.db.DatabaseManager;
/**
* Context menu for the bookmarks list items, available for API 11+ only.
*
*
* @author Christophe Beyls
*
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class BookmarksMultiChoiceModeListener implements MultiChoiceModeListener {
@ -28,6 +28,11 @@ public class BookmarksMultiChoiceModeListener implements MultiChoiceModeListener
listView.setMultiChoiceModeListener(listener);
}
public static void unregister(AbsListView listView) {
// Will close the ActionMode if open
listView.setChoiceMode(AbsListView.CHOICE_MODE_NONE);
}
private BookmarksMultiChoiceModeListener(AbsListView listView) {
this.listView = listView;
}
@ -52,11 +57,11 @@ public class BookmarksMultiChoiceModeListener implements MultiChoiceModeListener
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
// Remove multiple bookmarks at once
new RemoveBookmarksAsyncTask().execute(listView.getCheckedItemIds());
mode.finish();
return true;
case R.id.delete:
// Remove multiple bookmarks at once
new RemoveBookmarksAsyncTask().execute(listView.getCheckedItemIds());
mode.finish();
return true;
}
return false;
}