2016-08-16 4 views
0

У меня есть макет, который я хочу показать как всплывающее окно (используемое как меню настраиваемых опций), в то время как в фрагменте 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, чтобы заменить фрагмент в других частях моего проекта, и я знаю, что, вероятно, это сделает, однако это другой случай, когда я пытаюсь сделать всплывающее окно.

Спасибо!

Майк

+0

Может быть, [это] (http://stackoverflow.com/questions/18461990/pop-up-window -to-display-some-stuff-in-a-fragment) поможет? –

+0

Нет, это в основном то, что у меня уже есть и размещено в моей теме. Это раздувает макет, но как насчет всего класса фрагментов, который у меня есть? Как мне «раздуть» то, что так называется onCreateView? –

+0

Проводка кнопок в макете «TrackOptions» должна произойти прямо в методе 'onOptionsButtonClicked' ... например. 'Button btn = (Button) layout.findViewById (R.id.btn); ... код для его написания ... '... Если вы хотите показать фрагмент и иметь его OnCreateView, тогда вам нужно выполнить транзакцию фрагмента. – pnavk

ответ

0

фрагмент присоединять в деятельности, так что вы можете попробовать его в методе onActivityCreated (Bundle)

Смежные вопросы