フラグメント内の findViewById 質問する

フラグメント内の findViewById 質問する

フラグメントの XML で作成した ImageView 要素を参照する ImageView をフラグメント内に作成しようとしています。ただし、このメソッドはfindViewByIdActivity クラスを拡張した場合にのみ機能します。フラグメントでも使用できる方法はありますか?

public class TestClass extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        ImageView imageView = (ImageView)findViewById(R.id.my_image);
        return inflater.inflate(R.layout.testclassfragment, container, false);
    }
}

メソッドfindViewByIdには、メソッドが未定義であることを示すエラーがあります。

ベストアンサー1

使用取得ビュー()または、メソッドを実装した View パラメータonViewCreated。フラグメントのルート ビュー(メソッドによって返されるビューonCreateView()) を返します。これを使用して、 を呼び出すことができますfindViewById()

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    ImageView imageView = (ImageView) getView().findViewById(R.id.foo);
    // or  (ImageView) view.findViewById(R.id.foo); 
} 

getView()は の後でのみ機能するためonCreateView()フラグメント のまたはメソッド内では使用できません。onCreate()onCreateView()

おすすめ記事