2014-12-19 65 views
0

我使用MainActivity作爲FragmentActivity和TabsPagerAdapter作爲FragmentPagerAdapter。 我有狀態欄作爲一個片段(和標籤的一頁),並添加一個開關到這個代碼片段,沒有事件發生在事件。切換片段沒有事件

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

在片段中,視圖被誇大了,這就是爲什麼我們使用視圖來查找元素的原因。而在活動中,您不使用任何視圖。很高興幫助 –