Android 在两个片段之间发送数据

Android 在两个片段之间发送数据,android,android-fragments,bundle,Android,Android Fragments,Bundle,我有两个活动,每一个都有一个片段。 我将第一个fragmrnt之间的数据(简单字符串)发送到第二个活动,但无法将其从活动发送到第二个片段。 我做错了什么 这是获取数据的活动: public class DiaryActivity extends AppCompatActivity { private FragmentManager manager = getSupportFragmentManager(); @Override protected void onCreate(Bundle s

我有两个活动,每一个都有一个片段。 我将第一个fragmrnt之间的数据(简单字符串)发送到第二个活动,但无法将其从活动发送到第二个片段。 我做错了什么

这是获取数据的活动:

public class DiaryActivity extends AppCompatActivity {

private FragmentManager manager = getSupportFragmentManager();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_diary);
    if(savedInstanceState == null){
        manager.beginTransaction().add(new EditDiaryFragment(), "tag").commit();
    }


}

@Override
protected void onResume() {
    super.onResume();
// get the data and pass it to the fradment... not working :(
    Intent intent = getIntent();
    String date = intent.getStringExtra("date");
    String diary = intent.getStringExtra("diary");

    Bundle bundle = new Bundle();
    bundle.putString("date", date);
    bundle.putString("diary", diary);

    EditDiaryFragment editDiaryFragment = new EditDiaryFragment();
    editDiaryFragment.setArguments(bundle);
}


}
public class EditDiaryFragment extends Fragment implements View.OnClickListener {

private EditText diaryEditText;
private Button diarySaveButton;
private TextView diaryDateText;
private String today;
private ShvizoutDBHelper helper;
private StringBuffer buffer;


public EditDiaryFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    helper = new ShvizoutDBHelper(getContext());


}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v =  inflater.inflate(R.layout.fragment_edit_diary, container, false);
    diaryDateText = (TextView) v.findViewById(R.id.diaryDateText);
    diarySaveButton = (Button) v.findViewById(R.id.diarySaveButton);
    diaryEditText = (EditText) v.findViewById(R.id.diaryEditText);

    diarySaveButton.setOnClickListener(this);

    Bundle bundle = getArguments();
    if(bundle != null){
        String bDate = bundle.getString("date");
        String bDiary = bundle.getString("diary");

        diaryDateText.setText(bDate);
        diaryEditText.setText(bDiary);
    }

    return v;
}


}
这是需要获取数据的片段:

public class DiaryActivity extends AppCompatActivity {

private FragmentManager manager = getSupportFragmentManager();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_diary);
    if(savedInstanceState == null){
        manager.beginTransaction().add(new EditDiaryFragment(), "tag").commit();
    }


}

@Override
protected void onResume() {
    super.onResume();
// get the data and pass it to the fradment... not working :(
    Intent intent = getIntent();
    String date = intent.getStringExtra("date");
    String diary = intent.getStringExtra("diary");

    Bundle bundle = new Bundle();
    bundle.putString("date", date);
    bundle.putString("diary", diary);

    EditDiaryFragment editDiaryFragment = new EditDiaryFragment();
    editDiaryFragment.setArguments(bundle);
}


}
public class EditDiaryFragment extends Fragment implements View.OnClickListener {

private EditText diaryEditText;
private Button diarySaveButton;
private TextView diaryDateText;
private String today;
private ShvizoutDBHelper helper;
private StringBuffer buffer;


public EditDiaryFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    helper = new ShvizoutDBHelper(getContext());


}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v =  inflater.inflate(R.layout.fragment_edit_diary, container, false);
    diaryDateText = (TextView) v.findViewById(R.id.diaryDateText);
    diarySaveButton = (Button) v.findViewById(R.id.diarySaveButton);
    diaryEditText = (EditText) v.findViewById(R.id.diaryEditText);

    diarySaveButton.setOnClickListener(this);

    Bundle bundle = getArguments();
    if(bundle != null){
        String bDate = bundle.getString("date");
        String bDiary = bundle.getString("diary");

        diaryDateText.setText(bDate);
        diaryEditText.setText(bDiary);
    }

    return v;
}


}

谢谢

添加捆绑包后,您需要将相同的EditDiaryFragment实例添加到活动中:

EditDiaryFragment editDiaryFragment = new EditDiaryFragment();
editDiaryFragment.setArguments(bundle);
getSupportFragmentManager.beginTransaction().add(editDiaryFragment, "tag").commit();

尝试在调试模式下运行以查看数据丢失的位置。如果所有其他操作都失败,请使用EventBus。显然,您有两个
EditDiaryFragment
实例,一个带参数,另一个不带参数。。。而你对那个有争论的人什么也不做。。。我怎样才能修好它?用管理器替换片段?好的。我的错误。我已将片段加载到Xml中。我也不能做这些事。我从Xml中删除了片段,将代码更改为litel。它现在正在工作。多谢大家