gpt4 book ai didi

java - 最初加载 Fragment 时,将数据从 Activity 传递到 Fragment

转载 作者:行者123 更新时间:2023-11-29 02:25:47 25 4
gpt4 key购买 nike

所以我的问题基本上是我的 MainActivity 最初加载了一个 fragment ,我们称之为 MyFragment。

我正在从网上加载 JSON 并希望传递到我的 MyFragment。

问题出在MainActivity中调用setContentView时,调用的是MyFragment中的onCreateView,其中包含getArguments.getSerializable("myTag")。 key 未通过,因为我还没有加载 JSON。

你能帮我解决这个问题吗?

这是我的代码:

在我的 fragment 中:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(getArguments() != null) {
coll = (HashSet<String>) getArguments().getSerializable("myTag");
}
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_my, container, false);
}

MainActivity(假设我已经加载了我的 JSON):

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadJSON();
passTagsToFragment(); //passes to the fragment
}

public void passTagsToFragment(){
Bundle bundle = new Bundle();
bundle.putSerializable("myTags", tagsSet);
TagsFragment frag = new MyFragment();
frag.setArguments(bundle);
}

编辑:

基本上,我的问题是我想在开始加载 Fragment 之前完全加载 MainActivity。不确定该怎么做。

编辑 2:

我在这里解决了问题是我的代码:(更改了变量名称)

主 Activity .java

public TagsFragment passInfoToTagsFramgent(){
Bundle bundle = new Bundle();
bundle.putSerializable("tags", tagsList);
TagsFragment frag = new TagsFragment();
frag.setArguments(bundle);
return frag;
}

在 MainActvity.java 的 OnPostExecute 中:

Fragment tagFragment = passInfoToTagsFramgent();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, tagFragment);
transaction.commit();

最佳答案

当所有 json 数据加载完毕后,您应该在异步任务的执行后方法中调用您的 passTagsToFragment() 方法。

 protected void onPostExecute(Long result) {
passTagsToFragment();
}

关于java - 最初加载 Fragment 时,将数据从 Activity 传递到 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52324244/

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