在android
应用程序中,我将Db
中的数据加载到Fragment
中的TableView
中。但是当我Reload
fragment
它显示以前的数据。我可以使用当前数据而不是以前的数据重新填充Fragment
吗?重新加载时刷新片段
回答
我想你想刷新在DB更新片段内容
如果是这样,分离片段并重新它
// Reload current fragment
Fragment frg = null;
frg = getSupportFragmentManager().findFragmentByTag("Your_Fragment_TAG");
final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.detach(frg);
ft.attach(frg);
ft.commit();
Your_Fragment_TAG是你给你的片段,当你创建它的名字
此代码用于支持库。
如果你不支持较旧的设备,只是用getFragmentManager代替getSupportFragmentManager
[编辑]
此方法需要片段的有一个标签。
如果你没有它,那么@ Hammer的方法就是你所需要的。
这给了以下错误 - java.lang.RuntimeException:失败传递结果ResultInfo {who = null,request = 2,result = 3,data = null}到活动{xont.virtusel.v4.controller/xont.virtusel.v4.controller.sale.InvocieBrandActivity}:java.lang.IllegalStateException:Can not在onSaveInstanceState后执行此操作 –
我称这个@ onActivityResult。 –
那么,在onActivityResult中调用它有意义吗?看起来你的意图是空的(你看到:data = null)。我这样做:我更新我的数据库,并在我分离/重新附加我的片段后。 –
如果你没有片段标签,下面的代码适合我。
Fragment currentFragment = getActivity().getFragmentManager().findFragmentById(R.id.fragment_container);
if (currentFragment instanceof "NAME OF YOUR FRAGMENT CLASS") {
FragmentTransaction fragTransaction = (getActivity()).getFragmentManager().beginTransaction();
fragTransaction.detach(currentFragment);
fragTransaction.attach(currentFragment);
fragTransaction.commit();}
}
什么是片段ID,我没有在任何地方声明片段ID。如何以及在哪里申报? – NarendraJi
似乎无法在我的Activity中使用'getActivity()'。我应该使用'Activity.this ...'吗? – Si8
这将刷新当前片段:
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(this).attach(this).commit();
使用ContentProvider
并加载使用 'CursorLoader' 的数据。有了这种架构,您的数据将自动重新加载数据库更改。使用third-party frameworks您ContentProvider
- 你真的不希望自己去实现它...
MyFragment fragment = (MyFragment) getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG);
getSupportFragmentManager().beginTransaction().detach(fragment).attach(fragment).commit();
如果u使用FragmentManager
初始化片段,这只会工作。如果你使用XML作为<fragment ... />
,它不会再次调用onCreateView
。浪费了我30分钟的时间来解决这个问题。
你是如何解决这个问题的? – visoft
我有同样的问题,但以上都没有为我的工作。要么有一个堆栈中的问题(加载后,当用户按下回它会再去相同片段),或者它没有调用onCreaetView
最后我做到这一点:
public void transactFragment(Fragment fragment, boolean reload) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
if (reload) {
getSupportFragmentManager().popBackStack();
}
transaction.replace(R.id.main_activity_frame_layout, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
好的一点是你不需要片段的标签或ID。 如果你想重装
getFragmentManager().beginTransaction().detach(this).attach(this).commit();
请提供您的回答,并提供明确的描述。不要编写代码,给出关于您共享的代码的解释,以便其他人也可以理解,这会有所帮助。我请求你阅读FAQ部分,以便有效地使用Stack Overflow。 –
protected void onResume() { super.onResume(); viewPagerAdapter.notifyDataSetChanged(); }
不要写viewpagerAdapter.notifyDataSetChanged();在MainActivity中的onResume()中。 祝你好运:)
- 1. 加载后刷新片段
- 2. 重新加载片段
- 3. Android Java刷新/重新加载应用程序片段
- 4. 如何从导航抽屉中重新加载/刷新片段
- 5. Android |停止TabLayout重新加载/刷新我的片段
- 6. 刷新片段在重新加载或在旋转后
- 7. 重新加载/刷新ABPersonViewController
- 8. NStoolbar重新加载/刷新
- 9. 刷新/重新加载FileChooser
- 10. python刷新/重新加载
- 11. 刷新/重新加载uipicker
- 12. 刷新片段
- 13. 片段刷新
- 14. 刷新片段
- 15. 当新窗口刷新或重新加载时重新加载父窗口
- 16. 如何重新加载片段?
- 17. 底部条块片段重新加载
- 18. 如何停止重新加载片段
- 19. Android阻止webview重新加载片段
- 20. 重新加载片段不起作用
- 21. 片段未被重新加载
- 22. Android - 刷新片段
- 23. 片段“刷新”android
- 24. 如何重新加载/刷新Google Maps切片图层?
- 25. 删除碎片并用刷新按钮重新加载
- 26. 重新加载活动来重新切换片段
- 27. 如何刷新/重新加载桌面
- 28. 刷新/重新加载jQuery&IE
- 29. 如何重新加载/刷新app.config?
- 30. 刷新或重新加载在MVC
请给我们一些代码。你在哪里加载你的数据,你在哪里开始你的片段,你在哪里存储你的值? –
这应该解决你porly描述的问题:http://stackoverflow.com/questions/6503189/fragments-onresume-from-back-stack –
请提供更多的信息代码段 – nikvs