2014-12-19 6 views
0

Я использую MainActivity как функцию FragmentActivity и TabsPagerAdapter как FragmentPagerAdapter. У меня есть Statusbar как фрагмент (и страница вкладок) и добавление переключателя в фрагмент с этим кодом, во время события ничего не происходит.switch in fragment no event

public class Statusbar extends Fragment implements OnCheckedChangeListener { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
     View mLinearLayout = (View) inflater.inflate(R.layout.statusbar_fragment, 
       container, false); 
     Switch s = (Switch) getActivity().findViewById(R.id.swt1); 
     if (s != null) { 
      s.setOnCheckedChangeListener(this); 
     } 
     return mLinearLayout; 
    } 

    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     Toast.makeText(getActivity(), "hi", 
       Toast.LENGTH_SHORT).show(); 
    } 
} 

В чем проблема? Если я удалю это: if (s != null) { ... } сбой с ошибкой nullpointerexception.

ответ

0

у вас есть это:

View mLinearLayout = (View) inflater.inflate(R.layout.statusbar_fragment, 
      container, false); 
    Switch s = (Switch) getActivity().findViewById(R.id.swt1); 

изменить его:

View mLinearLayout = (View) inflater.inflate(R.layout.statusbar_fragment, 
      container, false); 
    Switch s = (Switch) mLinearLayout .findViewById(R.id.swt1); 
+0

работает! Спасибо! :) – fulmix

+2

Могу ли я также узнать, в чем разница между ними? – fulmix

+0

В фрагменте вид раздувается, и именно поэтому мы используем представление, чтобы найти элемент. В то время как в действии вы не используете какой-либо вид. Рад, что он помог –