2017-02-01 4 views
0

Мне нужно добавить кнопку в макет фрагмента предпочтений. Я могу успешно получить кнопку в макете «Предпочтения», но я не могу зафиксировать событие щелчка.Кнопка в предпочтении Фрагмент

все другие настройки записываются в обратном вызове onSharedPreferenceChanged, но кнопка не нажата.

Каков наилучший способ добавить обратный вызов к кнопке или вернуть ее значение в обратном вызове onSharedPreferenceChanged?

Я пробовал почти все примеры, которые я мог найти в Stackoverflow, но большинство из них спроектированы с учетом предпочтения, а не фрагмента.

Одно решение, которое я попробовал, активировало событие обратного вызова, но только тогда, когда этот обратный вызов был в хосте Activity!

Фрагмент конкретной помощи на это оценили.

ответ

0

Это должно работать в вашем фрагменте:

Button prefBtn = ((Button) view.findViewById(R.id.prefBtn)); 
    prefBtn.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      // Your code here 
     } 
    }); 

EDIT
Вам также нужно что-то вроде этого в макете фрагмента:

<Button 
     android:id="@+id/prefBtn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
+0

Спасибо за ответ. Я уверен, что я пробовал это, и он не работал, так как нет R.id.prefBtn, потому что макет предпочтений фрагмента находится в папке «xml» (по мере необходимости), а не в макете, существует. Можете ли вы подтвердить эту работу внутри фрагмента? – user3263740

+0

Да, код приходит непосредственно из моего собственного фрагмента. Вы должны указать кнопку id в файле макета xml вашего фрагмента. –

+0

Hi Mario, Когда я добавляю вышеприведенное приложение падает. Кнопка возвращается как нуль, и если я добавлю кнопку XMl, которую вы предложили, фрагмент выиграл, t даже загрузился. – user3263740

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