У меня есть диалоговое окно, в котором есть ListView, и когда вы выбираете элемент, необходимо отобразить контекстное действие.Панель диалога и контекстного действия
Это то, что у меня есть Это внутри getView-метода адаптера ListView ListView. searchView - это вид. bAct - это моя активность, которая запускает диалог.
final LinearLayout searchView;
final LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
searchView = new LinearLayout(getContext());
vi.inflate(resource, searchView, true);
}
else
{
searchView = (LinearLayout) convertView;
}
//Some code setting up some textview etc...
searchView.startActionMode(bAct.savedSearchMode);
И в моей деятельности я
public ActionMode.Callback savedSearchMode = new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
MenuInflater inflater = new MenuInflater(ActivityViewTimetable.this);
inflater.inflate(R.menu.saved_searches, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.run:
progress.setTitle("Searching...");
progress.setMessage("Fetching classes from the server");
progress.show();
AsyncForTimetable(typeID, classID, venueIds.values(), true);
hideSavedSearchDialog();
break;
case R.id.delete:
ToastMe("Delete search");
break;
default:
ToastMe("Unknown: "+menuItem.getTitle());
break;
}
actionMode.finish();
return false;
}
@Override
public void onDestroyActionMode(ActionMode actionMode) {
actionMode.finish();
}
};
Все это работает один раз. Я могу открыть диалоговое окно, заставить ActionBar изменить мои элементы контекста и запустить поиск, но как только я попытаюсь сделать это снова, панель действий не изменится.
Может ли кто-нибудь увидеть, что у меня получилось?
Если вам нужны какие-либо другие биты кода проводки, дайте мне знать