2017-06-06 64 views
0

这听起来很愚蠢,但我使用bundle来存储我的数据,并试图将此bundle从片段传递到托管活动,并使用测试数据吐司,但吐司是空的!我找不到为什么,因为我确信正确填写数据发生这种情况的原因 我的片段中的代码是:获得null传递字符串从片段到活动使用包

@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); 

的活动是:

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();     } 
       } 
      } 
     }); 

回答

0

SetupViews执行创建视图之后,这意味着他们是最likelly空。您需要先制作onClickListener,用于在用户填充数据后设置数据。其他代码似乎是正确的

+0

您是对的,从editTexts获取的数据在创建片段时填充,而不是在用户填充它,所以我用editText.setOnFocusChangeListener为每一个,它工作得很好 –

0

尝试此发送数据从片段: -

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); 

尝试一下本作在活动中获取数据: -

String data=this.getIntent().getStringextra(KEY_PARENT_FULL_NAME); 
相关问题