読者です 読者をやめる 読者になる 読者になる

うさがにっき

読書感想文とプログラムのこと書いてきます

継承元Fragmentのwidgetをとりだす

Android

概要

「汎用的に作られたFragment」を継承したFragmentで「汎用的に作られたFragment」のwidgetをとりだし編集する方法をまとめる

詳細

「汎用的に作られたFragment」のレイアウト

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin">

    <TextView
        android:id="@+id/hello"
        android:text="hello world" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

ソース

public class BaseFragment extends Fragment {
    public BaseFragment() {
    }

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

}

このfragmentの「android:id="@+id/hello"」のtextを継承先で書き換える

継承先ソース(レイアウトは当然なし)

public class MainFragment extends BaseFragment {
    TextView mTextView;

    public MainFragment() {
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        mTextView = (TextView)view.findViewById(R.id.hello);
        mTextView.setText("goodbye");

        super.onViewCreated(view, savedInstanceState);
    }
}

onViewCreatedメソッドはビュー階層が生成された直後の初期化処理に利用される
引数であるViewに継承元で作成された(onCreateViewで作成された)viewが入っているためそれを編集して渡してやれば継承元の「汎用的に作られたFragment」のwidgetやレイアウトを編集できる

参考

tatsu-zine.com