Warning: this may be a pre-Lollipop answer.
A Fragment
doesn't get re-inflated on configuration change, but you can achieve the effect as follows by creating it with a FrameLayout
and (re)populating that manually:
public class MyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) { FrameLayout frameLayout = new FrameLayout(getActivity()); populateViewForOrientation(inflater, frameLayout); return frameLayout; } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); LayoutInflater inflater = LayoutInflater.from(getActivity()); populateViewForOrientation(inflater, (ViewGroup) getView()); } private void populateViewForOrientation(LayoutInflater inflater, ViewGroup viewGroup) { viewGroup.removeAllViewsInLayout(); View subview = inflater.inflate(R.layout.my_fragment, viewGroup); // Find your buttons in subview, set up onclicks, set up callbacks to your parent fragment or activity here. }}
I'm not particularly happy with the getActivity()
and related calls here, but I don't think there's another way to get hold of those things.