开发人员建议:以下内容可能会损害某些开发人员的敏感性,请自行承担风险。
我开始使用Android developpement / java,我的目标是从远程休息服务加载json,并在ViewPager上使用2个片段,目前我正在这样做(请阅读开发者顾问:),我只是以algorythmic的方式显示代码的重要部分,无需检查语法):
我在viewpager上声明了一个变量,我计划使用片段中的getActivity回调
Viewpager.java
public class Viewpager extends AppCompatActivity{
...
public static JSONObjInvitationParser jsonParser;
...
}
Fragment1.java
public class Fragment1 extends ListFragment{
...
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final Viewpager activity = (Viewpager) getActivity();
activity.jsonParser = CallMyRestServiceAndGetTheJSON();
populateListView(activity.jsonParser.getanOtherListArrayOfSTuff());
}
}
在第二个片段上,我无法在onCreatView期间调用我的activy.jsonParser,否则我得到了pointerNull,我的猜测是Viewpager一次调用所有的createView,setUserVisibleHint也是如此。
Fragment2.java
public class Fragment2 extends ListFragment{
...
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
final Viewpager activity = (Viewpager) getActivity();
if (isVisibleToUser) {
System.out.println(activity.jsonParser.getListArrayOfSTuff());
populateListView(activity.jsonParser.getListArrayOfSTuff());
}
}
...
}
}
像这样,它可以工作,我可以在我的2个片段上实际填充我的listvews只调用一次其他服务,但必须有一个比这个丑陋的黑客更好的方式:/不幸的是,我还不知道它,任何人都可以让我知道他将如何正确实施?
提前多多感谢:)
答案 0 :(得分:1)
我经常创建一个模型类来表示JSON数据。该类实现Parcelable
接口。您可以将数据放入Fragment:
DetailsFragment f = new DetailsFragment();
Bundle args = new Bundle();
args.putParcelable("data", yourDataObject);
f.setArguments(args);