die Verwendung von bundle zum übergeben von Daten zwischen fragment ein weiteres fragment Beispiel
Ich habe 3 sherlockListFragments in meiner app. Jedes fragment hat einige editTexts und das Letzte fragment hat eine Taste, wenn die Taste gedrückt ist, werden alle Daten in die ersten und zweiten Fragmente zugegriffen werden soll und gespeichert werden.
Ich verwendet bundle zum senden von Daten zwischen Fragmenten. mit dem einfachen folgenden Beispiel
Dies ist der code meiner ersten fragment :
public class PersonalDataFragment extends SherlockListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragmet_personal_data, container, false);
return v;
}
@Override
public void onCreate(Bundle savedInstanceState) {
PersonalDataFragment fragment = new PersonalDataFragment();
Bundle bundle = new Bundle();
bundle.putString("y", "koko"); //any string to be sent
fragment.setArguments(bundle);
super.onCreate(savedInstanceState);
}
}
und dies ist der code des fragments, der den text empfängt :
public class WorkExpRefFragment extends SherlockListFragment {
String myInt;
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_workexp_ref, container, false);
final EditText t = (EditText) view.findViewById(R.id.editText5);
final Button generate = (Button)view.findViewById(R.id.button2);
generate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO Auto-generated method stub
t.setText(myInt + "sadfigha");
}
});
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
Bundle bundle = this.getArguments();
if(getArguments()!=null) {
myInt = getArguments().getString("y");
}
super.onCreate(savedInstanceState);
}
}
Nun habe ich eine null in der Dritten fragment, was soll ich tun ?
Vielen Dank im Voraus
InformationsquelleAutor Fareed | 2013-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist normal, dass Ihr code fehlschlägt. Im ersten fragment ist alles, was Sie tun ist, erstellen Sie eine neue Instanz von
PersonalDataFragment
und übergeben Sie es einemBundle
mit den Daten. Das problem ist, obwohl fragment hält die Daten in derBundle
, das fragment selbst ist nicht die einzige von der app(noch nicht einmal angeschlossen, um dieActivity
). Sie legen auch dieBundle
auf einePersonalDataFragment
Instanz, sondern Sie versuchen, Zugriff auf die Daten in einerWorkExpRefFragment
die offensichtlich nicht so funktionieren, wie die beiden Fragmente keine direkte Verbindung.Eine einfach Lösung für das, was Sie wollen zu tun ist, lassen Sie die
Activity
"speichern" werden die Daten für Ihre Fragmente, wie dieActivity
ist für alle Fragmente. Erstellen Sie zuerst zwei Methoden in derActivity
hielt die drei Fragmente:Dann Ihre Fragmente speichern Ihre Daten wie diese:
Zum abrufen der Daten in der
WorkExpRefFragment
fragment:Je nachdem, wie Sie verwendet diese Fragmente, diese Lösung funktioniert möglicherweise nicht. Beachten Sie auch, dass die
Bundle
Sie übergeben, wie oben angegeben, wird nicht beibehalten werden, eine änderung der Konfiguration.Ich habe es gemacht und addTextChanged listiner 🙂 vielen Dank
InformationsquelleAutor Luksprog