android - 如何使用可序列化从活动获取数据到片段
问题描述
如何检索我们输入到的activity
数据fragment
?我用这个方法试过这个serializable
,但是我在接收我的数据activity
并将其应用到fragment
活动类:
Intent intent = new Intent(AddImpianActivity.this, AktifFragment.class);
AktifFragment aktifFragment = new AktifFragment();
Bundle bundle = new Bundle();
bundle.putSerializable("Data",impianItems);
aktifFragment.setArguments(bundle);
startActivity(intent);
这是 Activity 类的完整代码:https ://codeshare.io/GA4weN
这是活动项目类的代码:https ://codeshare.io/aVb1D6
活动适配器:https ://codeshare.io/aVb1D6
片段类:
public class AktifFragment extends Fragment {
ArrayList<ImpianItem> items = new ArrayList<>();
public AktifFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_aktif, container, false);
//null object reference
RecyclerView recyclerView = view.findViewById(R.id.rv_impian_list);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
items = (ArrayList<ImpianItem>) getArguments().getSerializable("Data");
ImpianAdapter adapter = new ImpianAdapter(items);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(layoutManager);
return view;
}
}
上面的代码,当我运行它并从出现的消息中,serializable
在fragment
. 有针对这个的解决方法吗?
解决方案
这是一种序列化对象的简单方法,将它们存储在 SharedPreferences 中,然后存储在您读取对象的片段中。
在你的 Gradle 中:implementation 'com.google.code.gson:gson:2.8.5'
在您的活动中:
val prefsEditor = getSharedPreferences()!!.edit()
val gson = Gson()
val json = gson.toJson(institucion)
prefsEditor.putString("institucion", json)
prefsEditor.commit()
在片段中,您可以这样阅读
val preferences = (activity as YourActivity).getSharedPreferences()
val gson = Gson()
val json = preferences.getString("institucion", "")
ong = gson.fromJson(json, Institucion::class.java)
这是在 kotlin 中,但在 java 中是相同的概念。
推荐阅读
- angularjs - 我如何在函数外部获得响应,内部函数响应获取
- opencv - 移除影响图像的照明形状以保留特征
- nginx - 无法让 Nginx 在同一根目录的不同位置工作
- python - 如何使用 python 访问 Gerrit Rest API
- php - 当我尝试使用 set_error_handler 时,Laravel 出现 unserialize() 错误
- pdf - 如何在 PowerBuilder 中动态创建 PDF 文档?
- javascript - jQuery:c.replace 不是函数
- azure-active-directory - 如何获取已登录用户的 Azure AD objectid?
- pcf - PCF 在非工作时间自动删除和启动应用程序
- android - Sqlite 数据库在 Samsung Android Oreo 8.0 设备中无法正常运行