2017-06-06 66 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); 
相關問題