1

Ich habe eine Aktivität, deren einziger Zweck es ist, ein Fragment zu hosten. Ich beginne diese Aktivität mit einer Absicht und verwende dann Informationen aus der Absicht, um einem Fragment Fragmente hinzuzufügen, die ich zu der neuen Aktivität hinzufügen möchte.Bündel verschwinden von Fragment nach Commit?

Hier ist der onCreate in SingleClickerActivity (diese Aktivität wird durch den Intent gestartet). Beim Durchlaufen habe ich überprüft, dass das Fragment das Argument hat, das ich senden möchte. Fragment has argument (this is right before the transaction step)

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(getLayoutResId()); 

    UUID clickerId = (UUID) getIntent().getSerializableExtra(EXTRA_CLICKER_ID); 
    FragmentManager fm = getSupportFragmentManager(); 
    Fragment fragment = fm.findFragmentById(R.id.fragment_container); 

    if (fragment == null) { 
     fragment = createFragment(clickerId); 
     fm.beginTransaction() 
       .add(R.id.fragment_container, fragment) 
       .commit(); 
    } 
} 

ich das Fragment gemacht habe, hat es die args Bündel, und ich verpflichte es. Aber wenn ich an die onCreate fragment:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mClickerId = (UUID) getArguments().getSerializable(ARG_CLICKER_ID); 
    mClicker = ClickerBox.get(getActivity()).getClicker(mClickerId); 
} 

NULL zurück. Das Bündel hat gequält. Wo geht es verloren?

Antwort

0

Gelöst!

Die onCreate-Methode namens Super, die ein weiteres Fragment ohne Argumente erstellt. Ich bekam zwei Fragmente, eines mit Argumenten und eines ohne. Der leere war derjenige, der mit der Aktivität verbunden wurde. Ich nahm die onCreate in SingleClickerActivity heraus, so dass ich die geerbte Version verwenden würde, dann bewegte die Linie UUID clickerId = (UUID) getIntent().getSerializableExtra(EXTRA_CLICKER_ID); into createFragment().

Verwandte Themen