使用包从片段获取空传递字符串到活动

getting null pass String from fragment to the activiy using bundle

这听起来很傻,但我正在使用 bundle 来存储我的数据,并试图将这个 bundle 从片段传递到主机 activity,并使用 toast 测试数据,但是 toast是空的!我无法找到发生这种情况的原因,因为我确保正确填写数据 我在片段中的代码是:

 @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_parent_register, container, false);
        return rootView;
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        setUpViews();
        setRecyclerAdapter();
    }

    private void setUpViews() {
        fullNameEditText = (EditText) rootView.findViewById(R.id.fragment_parent_register_fullName);
        emailEditText = (EditText) rootView.findViewById(R.id.fragment_parent_register_email);
        passwordEditText = (EditText) rootView.findViewById(R.id.fragment_parent_register_password);
        fullName = fullNameEditText.getText().toString();
        email= emailEditText.getText().toString();
        password = passwordEditText.getText().toString();
        Bundle parentData = new Bundle();
        parentData.putString(KEY_PARENT_FULL_NAME,fullName);
        parentData.putString(KEY_PARENT_EMAIL,email);
        parentData.putString(KEY_PARENT_PASSWORD,password);

        Intent intent = getActivity().getIntent();
        intent.putExtras(parentData);

在activity中是:

  registerButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (DataHolder.getInstance().getAccountType() == 0) {
                    Intent intent = new Intent(RegisterActivity.this, TeacherLocationActivity.class);
                    startActivity(intent);
                } else {
                /*    Intent intent = new Intent(RegisterActivity.this, StudentLocationActivity.class);
                    startActivity(intent);*/
                    Bundle parentData = getIntent().getExtras();
                    if (parentData != null)
                    {
                        Toast.makeText(RegisterActivity.this, parentData.getString(KEY_PARENT_FULL_NAME)+parentData.getString(KEY_PARENT_EMAIL)+parentData.getString(KEY_PARENT_PASSWORD), Toast.LENGTH_SHORT).show();
                    }
                    else if (parentData == null)
                    {
                        Toast.makeText(RegisterActivity.this, "Bundle is empty", Toast.LENGTH_SHORT).show();                    }
                }
            }
        });

尝试从 Fragment 发送数据:-

Intent intent=new Intent(getContext(),YourActivityName.class);
            intent.putExtra(KEY_PARENT_FULL_NAME,fullName);
            intent.putExtra(KEY_PARENT_EMAIL,email);
            intent.putExtra(KEY_PARENT_PASSWORD,password);

试试这个在 Activity 中获取数据:-

String data=this.getIntent().getStringextra(KEY_PARENT_FULL_NAME);

要将数据从片段传递到 activity,您应该使用 OnFragmentInteractionListener。转到 Android studio,添加新片段以查看它是如何实现的。非常简单。

阅读此处:https://developer.android.com/training/basics/fragments/communicating.html

SetupViews 在创建视图后立即执行,这意味着它们很可能是空的。需要先make onClickListener 设置用户填写后的数据,其他代码好像是对的