gpt4 book ai didi

java - 在 ViewPager 上跨多个 fragment 加载 Json,需要更好的方法

转载 作者:行者123 更新时间:2023-12-01 10:01:45 25 4
gpt4 key购买 nike

开发者忠告:以下内容可能会伤害部分开发者的敏感度,请阅读者自行承担风险。

我开始从事 Android 开发/java,我的目标是从远程休息服务加载 json,并在 ViewPager 上的 2 个 fragment 中使用它,目前我正在这样做(请阅读开发人员咨询) :),我只是在这里以算法的方式展示代码的重要部分,不需要检查语法):

<小时/>

我在 viewpager 上声明了一个变量,我计划使用 fragment 中的 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());
}
}

在第二个 fragment 上,我当然不能在onCreatView期间调用我的activy.jsonParser,否则我会得到pointerNull,我的猜测是Viewpager一次调用所有createView,setUserVisibleHint hack也是如此。

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个 fragment 上真正填充我的列表,仅调用一次其余服务,但一定有比这个丑陋的黑客更好的方法:/不幸的是,我还不知道,任何人都可以让我知道他将如何正确实现这一点?

提前非常感谢:)

最佳答案

我经常创建一个模型类来表示 JSON 数据。该类实现 Parcelable 接口(interface)。您可以将数据放入 Fragment:

DetailsFragment f = new DetailsFragment();

Bundle args = new Bundle();
args.putParcelable("data", yourDataObject);
f.setArguments(args);

关于java - 在 ViewPager 上跨多个 fragment 加载 Json,需要更好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36764491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com