Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to manually call onCreateView in a Fragment?

Tags:

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:

@Override 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(R.id.layoutExsternal);     layoutHall = (RelativeLayout) view.findViewById(R.id.layoutHall);      init();      return view;  }    [...]  @Override public boolean onOptionsItemSelected(MenuItem item) {       // TODO Auto-generated method stub      Log.d("itemSelected1", this.getClass().getSimpleName());       switch (item.getItemId()) {         case R.id.menu_refresh:              //HERE I want to insert a method for refresh o redraw       return true;      }  return super.onOptionsItemSelected(item);  } 
like image 564
Symon_9851 Avatar asked Jun 20 '13 07:06

Symon_9851


1 Answers

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:

getSupportFragmentManager()     .beginTransaction()     .detach(fragment)     .attach(fragment)     .commit(); 

See this question for the difference between remove and detach

like image 200
Matthew Mcveigh Avatar answered Sep 22 '22 15:09

Matthew Mcveigh