Des fragments ne peuvent pas être démarrés, ils doivent être ajoutés à un conteneur.
Les fragments ne sont pas destinés à fonctionner seuls, ils ont besoin d'une activité englobante.
Avoir la disposition suivante:
[...]
<FrameLayout android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/detailsElementBackground" />
[...]
Vous placez le fragment comme tel:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container, newFragment);
transaction.commit();
Vous passez des arguments au fragment en utilisant Bundle et en créant le fragment comme suit:
TestFragment newFragment = new TestFragment();
Bundle args = new Bundle();
args.putString("Hello world!");
newFragment.setArguments(args);
Ceci doit être fait avant la transaction.
Pour plus d'information consultez le official documentation
Remarque sur le code édité: vous devez appeler la transaction à l'intérieur de l'activité du FrameLayout fait partie.
Vous pouvez également utiliser une solution de contournement plutôt sale: à Main:
public class Main extends Activity{
public static Main currentInstance;
public void onCreate(Bundle boomerang){
currentInstance = this;
}
}
Dans l'activité Playlist puis utilisez Main.currentInstance.getSupportFragmentManager()
etc.
Mais je ne le recommanderais pas.
J'ai édité mon code. Mais comme mentionné ici, je ne voudrais pas essayer de remplacer le fragment d'une autre activité. – Ch4t4r