public static final String TAG = "TWO_FRAGMENT";
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
} else {
mAuth = FirebaseAuth.getInstance();
userRef = FirebaseDatabase.getInstance().getReference("user_course");
users = FirebaseAuth.getInstance().getCurrentUser();
daftarTugasRef = FirebaseDatabase.getInstance().getReference("tugas");
mTugasRef = FirebaseDatabase.getInstance().getReference("tugas_course");
mFlagTugas = FirebaseDatabase.getInstance().getReference("flag_tugas");
LoadData();
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setHasOptionsMenu(true);
v = inflater.inflate(R.layout.fragment_two, container, false);
swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
@Override public void run() {
LoadData();
swipeLayout.setRefreshing(false);
listTugas.clear();
}
private void onLoaded() {
swipeLayout.setEnabled(true);
swipeLayout.setRefreshing(false);
}
}, 500);
}
});
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setOffscreenPageLimit(3);
setupViewPager(viewPager);
viewPager.setCurrentItem(position);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
reloadFragment("TWO_FRAGMENT");
setupTabIcons();
}
private void setupViewPager(ViewPager viewPager) {
adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFrag(new OneFragment(), "ONE");
adapter.addFrag(new TwoFragment(), "TWO");
adapter.addFrag(new ThreeFragment(), "THREE");
viewPager.setAdapter(adapter);
viewPager.getAdapter().notifyDataSetChanged();
}
class ViewPagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFrag(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public int getItemPosition(@NonNull Object object) {
return POSITION_NONE;
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// viewPager.getAdapter().notifyDataSetChanged();
// adapter.notifyDataSetChanged();
}
@Override
public void onPageScrollStateChanged(int state) {
}
protected void reloadFragment(String TAG){
// Reload current fragment
Fragment frg = null;
frg = this.getSupportFragmentManager().findFragmentByTag(TAG);
FragmentTransaction ft =this.getSupportFragmentManager().beginTransaction();
ft.detach(frg);
ft.attach(frg);
ft.commit();
}
您可以使用EventBus,将其放在所有片段中:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(ViewEvent viewEvent) {
if (viewEvent.getMessage().equals("updateViews")) {
updateView();
}
}
当您想要更新时,可以发送如下所示的事件:
EventBus.getDefault().post(new ViewEvent("updateViews"));
ps:ViewEvent是一个必须创建的对象,该对象要发送到所有suscribed片段。
public class ViewEvent {
private String message;
public ViewEvent( String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
我基本上是在中更新一个值,并使用将其发送到片段。所有片段都应该在上显示相同的值。 我的问题是我的应用程序有3个片段页面,只有中间的页面(Fragment_B)在更新... 为什么所有的片段不同时更新?该值从不显示在Fragment_A和fragment_c上。 应该更新所有的片段,但它只更新片段B。但是我试图调试这个问题,并创建了和SetText,它适用于每个片段。我不知道为什么会这样。有人能帮帮
问题内容: 我正在使用Java进行项目,因此需要在单击特定按钮后重新加载整个程序。这该怎么做? 问题答案: 尝试 如果仍然无法使用,请在完成上述步骤后尝试
下面是: 这是我要用于向中添加项的方法
问题内容: 我有一个具有单个 视图* 的 Eclipse插件 (例如eclipse helloworld-view-plugin- project)。在视图文件中 ,我想更新视图时 得到一个 事件 。 *** 在此视图中,我在一个具有多个标签的组中有一个GridData。我有几个 注册到程序的服务,其状态应 在此GridData中显示。 编辑:为了更好地显示我的问题,我更新了这篇文章,并添加了整个
我有一个带有FragmentStateAdapter()适配器的viewpage er2。我还有一个带有4个选项卡的选项卡布局。我为所有选项卡使用单个片段。这被命名为AllOrdersTabb。在我的架构中,我只是发送不同的值来将不同的API数据加载到AllOrdersTab片段。当选择每个选项卡布局时,创建一个片段并首次为所有4个片段正常工作。之后,如果我刷回上一个选项卡,它就不会再次创建或刷新
问题内容: 我是Angular和ui路由器的新手。当某人选择一个模型并且我的控制器执行标准的SHOW方法时,我只想更新URL以包括模型的ID,而无需刷新页面,然后继续原始视图。我不确定该怎么做… 问题答案: 您使用的代码段与正确的 ui路由器 设置有点不同。我会建议您,检查此演示应用程序:http : //angular-ui.github.io/ui- router/sample/#/conta