У меня есть макет, который я хочу показать как всплывающее окно (используемое как меню настраиваемых опций), в то время как в фрагменте viewpager. Поэтому, когда кнопка «Параметры» нажата, я делаю следующее:onCreateView не вызвал фрагмент, который был завышен layoutinflator
public void onOptionsButtonClicked(int buttonHeight)
{
LayoutInflater optionsLayoutInflater = (LayoutInflater)Context.GetSystemService(Context.LayoutInflaterService);
int popupWidth = ViewGroup.LayoutParams.MatchParent;
int popupHeight = ViewGroup.LayoutParams.WrapContent;
View layout = optionsLayoutInflater.Inflate(Resource.Layout.TrackOptions, null);
int popupYOffset = (85 + buttonHeight) * -1;
var popup = new PopupWindow(context);
popup.Focusable = true;
popup.Width = popupWidth;
popup.Height = popupHeight;
popup.ContentView = layout;
popup.SetBackgroundDrawable(new BitmapDrawable());
popup.OutsideTouchable = true;
popup.ShowAsDropDown(view, 0, popupYOffset);
}
И это работает, как я хочу, визуально это. Смысл, я нажимаю кнопку, и я вижу всплывающее окно макета как всплывающее окно со всеми моими параметрами. ОДНАКО, ни одна из кнопок не работает. Я поставил точку останова в классе, которая должна быть связана с макетом, и заметила, что onCreateView никогда не вызывается, поэтому ни одна из кнопок и связанных обработчиков событий событий не подключена. Итак, я знаю, почему он не работает. Однако я не знаю, как это исправить. Я думаю, что это потому, что, хотя я раздуваю представление, я никогда не создаю фрагмент. Я сделал транзакции fragementmanager, чтобы заменить фрагмент в других частях моего проекта, и я знаю, что, вероятно, это сделает, однако это другой случай, когда я пытаюсь сделать всплывающее окно.
Спасибо!
Майк
Может быть, [это] (http://stackoverflow.com/questions/18461990/pop-up-window -to-display-some-stuff-in-a-fragment) поможет? –
Нет, это в основном то, что у меня уже есть и размещено в моей теме. Это раздувает макет, но как насчет всего класса фрагментов, который у меня есть? Как мне «раздуть» то, что так называется onCreateView? –
Проводка кнопок в макете «TrackOptions» должна произойти прямо в методе 'onOptionsButtonClicked' ... например. 'Button btn = (Button) layout.findViewById (R.id.btn); ... код для его написания ... '... Если вы хотите показать фрагмент и иметь его OnCreateView, тогда вам нужно выполнить транзакцию фрагмента. – pnavk