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) {
//ボタンクリックした際の処理を記述
}
}