Furudateのブログ

プログラミングやネットワーク系の知識・技術がメインのブログ。技術メモ帳的な感じになるかと。岩手から発信していきます。

【Android】FragmentでfindViewByIdをしてButtonなどを取得する

こんにちは。

Fragmentでレイアウトファイルのほうで作成したButtonを、ActivityでやっているとおりfindViewByIdで取得しようとすると、エラーが出ます。
findViewByIdはFragmentでは定義されていないからです。

そこで、今回はFragmentでfindViewByIdをする方法を書きたいと思います。
一応やり方が迷ったので載せますが、かなり簡単です!

ちなみにFragmentについてはこちらの記事を参考にしてもらうとわかると思います!

以下ソースコードです。

public class FragmentTest extends Fragment implements OnClickListener{

	@Override
	 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
		// 第3引数のbooleanは"container"にreturnするViewを追加するかどうか  
       //trueにすると最終的なlayoutに再度、同じView groupが表示されてしまうのでfalseでOKらしい  
		View v = inflater.inflate(R.layout.fragment_test, container, false);
		
		// ボタンを取得して、ClickListenerをセット
		Button btn = (Button)v.findViewById(R.id.FragmentTestButton);
		btn.setOnClickListener(this);
       return v;
	}

	@Override
	public void onClick(View v) {
		// TODO 自動生成されたメソッド・スタブ
		
	}

}


以上です。今回は無名関数は使っていません。
やったこととしては、inflater でViewを持ってきて、ViewからfindViewByIdをしただけです。

簡単ですね!


それでは。