I have AddMembers.class activity and MembersFragment.class fragment. 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.
So can anyone tell me that why am I getting null value when I call getArguments() method in the fragment.
Thanks in advance!
Here's my AddMembers.class src-code:
@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:
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:
Bundle bundle = new Bundle();
bundle.putString("name", "From Activity");
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
and try get sent data in 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()
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
String name = getArguments().getString("name");
return inflater.inflate(R.layout.fragment, container, false);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.