Ich gebe Daten von einer Aktivität an Fragment weiter, im Fragment ist der zurückgegebene Wert null. Beachten Sie, dass ich 2 Toasts aus dem Fragment eingerichtet habe, um den Wert myValue
zu testen. Der zurückgegebene Toast stammt aus der Else-Anweisung, in der myValue null ist.Übergabe von Daten von Aktivität zu Fragment Rückgabe Null
Aktivität:
case R.id.forward:
Bundle bundle = new Bundle();
bundle.putString("message", "From Activity");
Fragment_02_Contacts mainFragment = new Fragment_02_Contacts();
mainFragment.setArguments(bundle);
getSupportFragmentManager().beginTransaction().add(android.R.id.content, mainFragment).commit();
break;
Fragment:
String myValue;
.....
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (myValue != null)
{
myValue = this.getArguments().getString("message");
Toast.makeText(getActivity(), "message: "+myValue, Toast.LENGTH_SHORT).show();
return inflater.inflate(R.layout.fragment_02_contacts, container, false);
}
else
{
Toast.makeText(getActivity(), "message: "+myValue, Toast.LENGTH_SHORT).show();
// message is null ????
}
EDIT: Ich glaube, dass der Grund verknüpft sein können:
getSupportFragmentManager().beginTransaction().add(android.R.id.content, mainFragment).commit();
Macht dies meine Argumente zerstören und startet ein neues Fragment?
Wenn ich es zuerst zuweisen, stürzt die App mit: java.lang.NullPointerException: Versuch, die virtuelle Methode 'java.lang.String android.os.Bundle.getString (java.lang.String)' auf einem Null-Objekt-Verweis aufzurufen , um den Absturz der App zu vermeiden, habe ich if/else verwendet, also stürzt meine App mit Ihrer Methode ab, weil ich eine Nullreferenz erhalte. – user3560827
Das bedeutet, dass die Argumente nicht richtig gesetzt sind. Können Sie versuchen, sie in einem Konstruktor zu übergeben und sie dann dort zu setzen? Es wird auch empfohlen, Factory-Designmuster mit einer statischen 'newInstance' für Fragmente zu verwenden. – Vucko