Ich habe zwei Aktivitäten, die jeweils ein Fragment halten. Ich habe die Daten (einfache Zeichenfolge) zwischen dem ersten fragmrnt zu der zweiten Aktivität gesendet, aber ich kann es nicht von der Aktivität an das zweite Fragment senden. Was mache ich falsch?Senden Sie Daten zwischen zwei Fragmenten
Dies ist die Aktivität, die die Daten erhalten:
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);
}
}
Und das ist das Fragment, die die Daten erhalten müssen:
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;
}
}
Dank !!
Versuchen in den Debug-Modus laufen zu lassen, um zu sehen, wo die Daten verloren geht. Wenn alles andere fehlschlägt, verwenden Sie EventBus. – Vucko
offensichtlich haben Sie zwei Instanzen von 'EditDiaryFragment' eine mit Argument und Sekunde ohne ... und Sie tun nichts mit dem mit Argumenten – Selvin
mm ... wie kann ich es beheben? Ersetzen Sie das Fragment mit dem Manager? – Roish