Sym*_*851 21 android fragment android-view fragment-tab-host
是否可以onCreateView在a中手动调用方法Fragment,如果没有,是否可以通过某种方式模拟此调用?
我有一个FragmentActivitytabHost.每个选项卡都包含一个Fragment,我想Fragment在按下"刷新"按钮时刷新视图.更具体地说,我想重新调用该onCreateView方法.
我的代码目前看起来像:
@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);
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*igh 32
有时我发现FragmentTransaction的替换不适用于用自己替换片段,对我来说使用分离和附加的作用是什么:
getSupportFragmentManager()
.beginTransaction()
.detach(fragment)
.attach(fragment)
.commit();
Run Code Online (Sandbox Code Playgroud)
有关删除和分离之间的区别,请参阅此问题
我已经解决了我的问题.我用自己替换当前片段,但在保存当前片段的引用之前,然后我关闭调用onDestroy()的当前片段的生命周期.我记得它是"newFragment"变量.
switch (item.getItemId()) {
case R.id.menu_refresh:
//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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31247 次 |
| 最近记录: |