[英]Sending data from activity to a fragment?
I have AddMembers.class activity and MembersFragment.class fragment.我有 AddMembers.class 活动和 MembersFragment.class 片段。 I have been trying to send my data from AddMembers to MembersFragment, as through logging I confirmed that my data is set correctly by using setArguments() method but while retrieving the data I am getting null value.
我一直在尝试将我的数据从 AddMembers 发送到 MembersFragment,因为通过日志记录我确认我的数据使用 setArguments() 方法设置正确,但是在检索数据时我得到了空值。
So can anyone tell me that why am I getting null value when I call getArguments() method in the fragment.那么谁能告诉我为什么在片段中调用 getArguments() 方法时会得到空值。
Thanks in advance!提前致谢!
Here's my AddMembers.class src-code:这是我的 AddMembers.class src 代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_members);
Intent intent = getIntent();
final String members_name = intent.getStringExtra("tripName");
TextView membersTextView = findViewById(R.id.membersTextView);
final EditText membersEditText = findViewById(R.id.membersEditText);
Button addButton = findViewById(R.id.addButton);
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(AddMembers.this, HomePage.class);
String names = String.valueOf(membersEditText.getText());
Bundle data = new Bundle();
MembersFragment membersFragment = new MembersFragment();
startActivity(intent);
data.putString("name", names);
membersFragment.setArguments(data);
}
});
}
} }
and this is my MembersFragment.class src-code:这是我的 MembersFragment.class src-code:
private MembersViewModel membersViewModel;
String mParam;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle bundle) {
membersViewModel =
ViewModelProviders.of(this).get(MembersViewModel.class);
View root = inflater.inflate(R.layout.fragment_members, container, false);
if (getArguments() != null) {
mParam = getArguments().getString("name");
}
final TextView textView = root.findViewById(R.id.text_members);
membersViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
@Override
public void onChanged(@Nullable String s) {
textView.setText(s);
}
});
return root;
}
you should not use startActivity when destination is fragment, in AddMembers activity insert this code:当目的地是片段时,您不应该使用 startActivity,在 AddMembers 活动中插入以下代码:
Bundle bundle = new Bundle();
bundle.putString("name", "From Activity");
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
and try get sent data in MembersFragment:并尝试在 MembersFragment 中获取发送的数据:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("name");
return inflater.inflate(R.layout.fragment, container, false);
}
You have to add the data to the intent before calling startActivity()
您必须在调用
startActivity()
之前将数据添加到意图中
intent.putExtra(key, value);
And you get the value by then calling然后你通过调用获得价值
String value = getIntent().getExtras().getString(key)
I hope this code helps you:我希望这段代码可以帮助您:
AddMembers.class添加成员类
Bundle bundle = new Bundle();
bundle.putString("name", membersEditText.getText().toString());
MembersFragment frag = new MembersFragment();
frag.setArguments(bundle);
MembersFragment.class成员Fragment.class
String name = getArguments().getString("name");
return inflater.inflate(R.layout.fragment, container, false);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.