【Android】FragmentでfindViewById(Idを取得)する方法

FragmentでIdを取得するとき、findViewByIdをしてもIdを取得することができません。

FragmentはfindViewByIdが定義されていないからです。

ですが、FragmentでIdを取得する方法は簡単にできます。

Idの取得方法


Idの取得は、onCreateViewのなかで処理を行います。

一番最初の状態は以下のようになっていると思います。

public class BlankFragment extends Fragment {

    .
    .
    .

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_blank, container, false);
    }

    .
    .
    .

上記の状態から以下のように変更します。

public class BlankFragment extends Fragment {

    .
    .
    .

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_blank, container, false);

        // findViewByIdの前に「view」を付けてIdの取得
        Button btn = (Button) view.findViewById(R.id.button);

        .
        .
        .

        return view
    }

    .
    .
    .

View view = inflater.inflate(R.layout.fragment_blank, container, false);と書き換え、最後にreturn viewをします。

そのなかで、Idを取得するためにview.findViewByIdとします。findViewByIdのまえにviewを付けてあげることで、Idを取得できます。