java - 无法从适配器检索数据并将其显示为片段
问题描述
我想通过适配器从回收器视图中检索数据并将其显示到片段中,但是当我想在片段中使用数据时,数据仅存储在适配器内的包中,数据始终不会出现。
我的适配器
@Override
public void onClick(View v) {
Bundle bundle = new Bundle();
bundle.putString(BerandaFragment.KEY_NAME,
name.getText().toString());
bundle.putString(BerandaFragment.KEY_EMAIL,
email.getText().toString());
BerandaFragment berandaFragment = new BerandaFragment();
berandaFragment.setArguments(bundle);
}
My Fragment
cannot retrieve and display data on etDari
I'm getting error in line :
etDari = (EditText) view.findViewById(R.id.et_dari);
Bundle bundle = getArguments();
if (getArguments() != null) {
etDari.setText(bundle.getString(KEY_EMAIL));
etDari.setText(bundle.getString(KEY_EMAIL));
}
// else {
// etDari.setText(KEY_NAME);
// etDari.setText(KEY_EMAIL);
// }
解决方案
From Your Adapter Pass Data to Fragment in a mentioned way :
-------------------------------------------------------------------------------
replaceFragment(FragmentPurchaseWastageDetails.newInstance(requestList.get(position).getDate()));
Replace Fragment Code
-----------------------------
public void replaceFragment(Fragment fragment) {
String backStateName = fragment.getClass().getName();
FragmentManager manager = getSupportFragmentManager();
boolean fragmentPopped = false;
try {
fragmentPopped = manager.popBackStackImmediate(backStateName, 0);
} catch (Exception e) {
e.printStackTrace();
}
/*
if fragment not in back stack, create it.
*/
if (!fragmentPopped && manager.findFragmentByTag(backStateName) == null) {
FragmentTransaction ft = manager.beginTransaction();
ft.replace(R.id.mainContainer, fragment, backStateName);
ft.addToBackStack(backStateName);
ft.commitAllowingStateLoss();
}
}
--------------------------------------------------
To get data In Fragment (Make newInstance method in your fragment)
public static FragmentPurchaseWastageDetails newInstance(String date) {
Bundle args = new Bundle();
args.putString("date", date);
FragmentPurchaseWastageDetails fragment = new FragmentPurchaseWastageDetails();
fragment.setArguments(args);
return fragment;
}
--------------------------------------------------------------
In method of onViewCreated put the mentioned code to get data
------------------------------------------------------------
private void getDatafromBundle() {
if (getArguments() != null) {
date = getArguments().getString("date");
}
}
推荐阅读
- html - 如何在 background-img 之后添加页脚?
- sql - 使用 string_split 函数查询更新字符串
- cmake - 如何知道CHECK_CXX_SOURCE_COMPILES使用的编译命令?
- reactjs - 嵌套导航器导致应用程序仅在发布模式下崩溃
- react-native - 如何更改SectionedMultiSelect右侧下拉图标的颜色 - react-native-sectioned-multi-select
- javascript - 具有自定义数据值的 Select2 ajax 预选
- vue.js - QUASAR:使用“推”重定向不起作用
- node.js - 阻止通过 api 请求发送数据
- c# - 如何使用 Elasticsearch 的 NEST“.net 客户端”对所有记录进行分页?
- typescript - 连接字符串作为对象索引