我把一切都解决了,但有一个问题。我有4个不同的碎片。其中一个包含ListView。当我单击ListView中的一项时,更改全局变量guestid
。如果然后返回到其他片段,这些它们应该被改变。因为他们使用这个变量作为参数。但它们不会改变。
public class Guest extends Fragment {
...
private ViewPager pager;
private MyPagerAdapter adapter;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.guest, null);
...
if (InternetResiver.isOnline(getActivity())) {
setData();
} else {
AlertDialog alert = InternetResiver.getAlertDialog(getActivity());
alert.show();
}
return v;
}
public void startNewTread(String newId) {
guestId = newId;
Log.d("usernewid",newId);
setData();
}
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
switch(pos) {
case 0: return Folio.newInstance(guestId,hotel,room);
case 1: return BalanceDetail.newInstance(guestId,hotel);
case 2: return History.newInstance(guestId,hotel);
case 3: return Record.newInstance(guestId,hotel,room);
default: return Folio.newInstance(guestId,hotel,room);
}
}
@Override
public int getCount() {
return 4;
}
}
public void setData() {
String link = String.format(......., guestId, hotel);
new MyAsincTask(getActivity()){........}.execute(link);
}
}
我的碎片
public class Folio extends Fragment {
private ArrayList<FolioBean> folioBeans;
private TableLayout tableFolio;
private String guestId;
private String hotel;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.folio, null);
guestId = getArguments().getString("guestid");
hotel = getArguments().getString("hotel");
folioBeans = new ArrayList<>();
tableFolio = (TableLayout) v.findViewById(R.id.tableFolio);
if (InternetResiver.isOnline(getActivity())) {
setData();
} else {
AlertDialog alert = InternetResiver.getAlertDialog(getActivity());
alert.show();
}
return v;
}
public static Folio newInstance(String guestid,String hotel,String room) {
Folio f = new Folio();
Bundle b = new Bundle();
b.putString("guestid", guestid);
b.putString("hotel", hotel);
b.putString("room", room);
f.setArguments(b);
return f;
}
public void setData() {
String link = String.format(........., guestId, hotel);
new MyAsincTask(getActivity()){........}.execute(link);
}
}
其他片段使用相同的guestid
加载
这是因为ViewPager缓存了片段。您需要使用FragmentStatePagerAdapterFragmentPagerAdapter
,并在更改Guestid
后调用NotifyDataSetChanged()
,然后重写
在PagerAdapter中重写getItemPosition,如下所示:
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
参见类似问题
问题内容: 当我使用Homebrew()安装OpenCV时,每当运行以下命令进行测试时,都会遇到此问题: 我试图升级NumPy,但这很令人困惑: 当我运行brew升级NumPy时,出现了以下问题: 当我卸载它时: 我已经关注了这个问题,并从Mac中删除了Anaconda。 但是什么都没有改变。如何将NumPy版本链接到OpenCV? 问题答案: 因为我们在系统中有两个NumPy安装。一个由Home
介绍 本文档提供了从 Vant 2 到 Vant 3 的升级指南。 升级步骤 1. 升级 Vue 3 Vant 3 是基于 Vue 3 开发的,在使用 Vant 3 前,请将项目中的 Vue 升级到 3.0 以上版本。 2. 处理不兼容更新 Vant 2 到 Vant 3 存在一些不兼容更新,请仔细阅读下方的不兼容更新内容,并依次处理。 不兼容更新 组件命名调整 GoodsAction 商品导航组
如果你正在运行Gogs 0.9.146以下版本,你可以平滑的升级到Gitea。该升级需要如下的步骤: 停止 Gogs 的运行 拷贝 Gogs 的配置文件 custom/conf/app.ini 到 Gitea 的相应位置。 拷贝 Gitea 的 options/ 到 Home 目录下。 如果你还有更多的自定义内容,比如templates和localization文件,你需要手工合并你的修改到 Gi
我必须向用户显示一组火车票,所以我使用了一个ViewPager,其中每个页面包含一张票。这个ViewPager有填充,允许看到下一个/上一个标签的一小部分,同时在中间显示聚焦的标签。 但我想实现的是,当我按下一个工单页面时,我希望它能顺利地扩展到“全屏”。我不知道在这种情况下使用ViewPager是否是更好的解决方案,因为我正在扩展视图页面管理器中片段内部的内容,而“扩展的票证”是另一种活动。 我
Symfony 2.7于2015年4月30日发布,是继2.3版本之后的当前LTS(长期支持)版本。Symfony 2.3的这些版本的维护将于2016年5月结束,Symfony 2.7的维护将于2018年5月结束。两个版本的安全补丁将在维护结束后的一年内发布。 正如Massimiliano Arione在公告评论中所建议的那样,从Symfony 2.3升级到2.7需要做哪些更改,而无需检查所有次要升