AndroidのFragmentでfindviewbyidするとnullが返る

2019年5月16日

Activityと同じようにFragmentでgetActivity().findViewById()するとnullが返ってきます。

 

なぜならばFragmentでfindviewbyidは定義されていないためです。

そこでFragmentを正しく使用するにはonCreateViewでinflateを使用してfindViewByIdします。

具体的なコードを次項でみていきましょう。

 

 

Fragmentでfindviewbyidを正しく行う方法

public class FragmentSample extends Fragment implements OnClickListener{
	@Override
	 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

                //Viewに対してFragmentをinflateする
		View v = inflater.inflate(R.layout.fragment_test, container, false);
	
		// ボタンにキャストしたViewに対してfindViewByIdを行い、ボタンにクリックリスナーを設定
		Button btn = (Button)v.findViewById(R.id.FragmentTestButton);
		btn.setOnClickListener(this);
       return v;
	}

	@Override
	public void onClick(View v) {
		//ボタンクリックした際の処理を記述
	}
}