android – Is it possible to manually call onCreateView in a Fragment?-ThrowExceptions

Exception or error:

Is it possible to manually call the method onCreateView in a Fragment or, if not, is there some way I can simulate this invocation?

I have a FragmentActivity with tabHost. Each tab contains a Fragment and I want to refresh the Fragment‘s view when I press the “Refresh” button. More specifically, I want to re-call the onCreateView method.

My code currently looks like:

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
// Inflate the layout for this fragment
    view= inflater.inflate(R.layout.fragment_hall, container, false);

    layoutExsternal = (RelativeLayout) view.findViewById(;
    layoutHall = (RelativeLayout) view.findViewById(;


    return view;


public boolean onOptionsItemSelected(MenuItem item) {
      // TODO Auto-generated method stub
     Log.d("itemSelected1", this.getClass().getSimpleName());

     switch (item.getItemId()) {

            //HERE I want to insert a method for refresh o redraw

     return true;

return super.onOptionsItemSelected(item);

How to solve:

Sometimes I found FragmentTransaction’s replace would not work for replacing a fragment with itself, what does work for me is using detach and attach:


See this question for the difference between remove and detach


I have resolved my question. I replace the current fragment with itself, but before I have saved a reference of current fragment and then i close life cycle of current fragment invoking onDestroy(). I recall it with “newFragment” variable.


switch (item.getItemId()) { case //THIS IS THE CODE TO REFRESH THE FRAGMENT. FragmentManager manager = getActivity().getSupportFragmentManager(); FragmentTransaction ft = manager.beginTransaction(); Fragment newFragment = this; this.onDestroy(); ft.remove(this); ft.replace(container.getId(),newFragment); //container is the ViewGroup of current fragment ft.addToBackStack(null); ft.commit(); return true; }


You can just have your replace button replace the current layout with a new instance of the fragment.

// onButtonClick
SomeFragment fragment = new SomeFragment();
getFragmentManager().beginTransaction().replace(, fragment).commit();

Leave a Reply

Your email address will not be published. Required fields are marked *