gpt4 book ai didi

android - tabLayout中如何从不同的fragments中传输数据?

转载 作者:行者123 更新时间:2023-11-29 19:20:26 26 4
gpt4 key购买 nike

我在将 ListView 的选定项传递给另一个 fragment 时遇到问题。

我有一个带有 2 个选项卡的 TabbedActivity。第一个称为 OngletCours,第二个称为 OngletNotes

我在传递我点击的项目时遇到错误。

我已经尝试了整个周末,但没有成功将我点击的项目转移到第二个选项卡/fragment 。

这是我的第一个 fragment/标签 OngletCours 中的代码(我只向您展示 setOnItemClickListener :

     l1.setOnItemClickListener(new AdapterView.OnItemClickListener()
{

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
OngletNotes fragment = ((Onglets)getActivity()).getOngletNotes();

if(fragment == null) {
fragment = OngletNotes.newInstance();
}
//récupération de la position convertie en String de l'item que j'ai choisi
String item = l1.getItemAtPosition(i).toString();

Bundle args = new Bundle();
args.putString("Item",item);

fragment.setArguments(args);

getFragmentManager().beginTransaction().add(R.id.container, fragment).addToBackStack(null).commit();
((Onglets)getActivity()).goToFragment(1);
}

});

我的第二个标签/fragment OngletNotes 看起来像这样:

public class OngletNotes extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.ongletnotes, container, false);
//where i want to insert the selectedItem
TextView Cours = (TextView)rootView.findViewById(R.id.TVCours);

Bundle bundle=getArguments();
String cours="";
//ERROR !
cours = bundle.getString("Item");
//Retrieve the value
Cours.setText(cours);

return rootView;
}

public static OngletNotes newInstance() {
OngletNotes fragment = new OngletNotes();
// put values which you want to pass to fragment
// Bundle args = new Bundle();
// fragment.setArguments(args);
return fragment;
}

我有以下错误:

03-06 12:48:13.959 1033-1033/com.example.dasilvadd.students E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException at com.example.dasilvadd.students.OngletNotes.onCreateView(OngletNotes.java:23)

第 23 行如下:

Bundle bundle=getArguments();

请帮我解决这个问题,我真的需要推进我的项目。提前谢谢你!

最佳答案

使用共享首选项,在 OngletCours 中创建共享首选项,然后在 OngletNotes 中阅读。所有客户端共享此类的单个实例,因此在这种情况下它是有意义的。转到此链接以刷新它的代码语法。 https://developer.android.com/training/basics/data-storage/shared-preferences.html

嘿,记住这一点以备将来之用,无论何时存储数据,都要对其进行序列化。一个很棒的图书馆是 gson。 Gson 是一个 Java 库,可用于将 Java 对象转换为其 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。 Gson 可以处理任意 Java 对象,包括您没有其源代码的预先存在的对象。只是需要考虑的事情。

关于android - tabLayout中如何从不同的fragments中传输数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42625841/

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