3

J'ai créé une liste à l'intérieur d'un Fragment en utilisant un adaptateur. Je veux afficher une boîte de dialogue différente pour chacun des éléments de la liste quand on clique dessus. J'ai ajouté l'écouteur aux éléments de la liste et écrit le code pour que la boîte de dialogue apparaisse pour l'un des éléments (le second). Cependant, lorsque je clique sur cet élément, l'écran du téléphone s'assombrit mais la boîte de dialogue n'apparaît pas. J'ai ajouté le code pertinent ci-dessous. J'ai beaucoup cherché sur ce problème sur Internet et j'ai essayé beaucoup de choses différentes mais rien ne semble fonctionner. Tout le reste de l'application fonctionne bien.L'écran s'assombrit mais la boîte de dialogue n'apparaît pas

Toutes sortes d'aide seront vraiment appréciées. Merci d'avance!

DialogFragment Classe:

public class GenreDialogFragment extends DialogFragment{ 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    AlertDialog dialog = builder.create(); 
    builder.setTitle(R.string.title_genre_dialog); 
    builder.setMessage("Are you sure?"); 
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // on success 
     } 
    }); 
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 

    return dialog; 
} 
} 

Parent Fragment classe dans laquelle je veux la boîte de dialogue apparaisse:

public class FragmentAddWatchedMovie extends ListFragment{ 
@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    SetListAdapter(); 
    SetClickListener(); 

} 
private void SetClickListener() { 
    ListView listView = (ListView) getView().findViewById(android.R.id.list); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      switch (position){ 
       case 0:{ 
        FragmentManager manager = getFragmentManager(); 
        GenreDialogFragment fragment = new GenreDialogFragment(); 
        fragment.setTargetFragment(FragmentAddWatchedMovie.this,0); 
        fragment.show(manager, "GenreDialog_Fragment"); 
        break; 

       } 
       case 1:{ 

       } 
       case 2:{ 

       } 
       case 3:{ 

       } 
       case 4:{ 

       } 
       case 5:{ 

       } 
      } 

     } 
    }); 

} 
+0

Essayez de déplacer « AlertDialog dialogue = builder.create(); » juste au-dessus de la ligne de retour s'il vous plaît. – Cata

+0

Ça a marché! Merci beaucoup :) –

Répondre

2

Déplacer la ligne suivante: "AlertDialog dialog = builder.create();" juste au-dessus de la ligne de retour dans la classe Dialog .

cela ne fonctionne pas pour vous parce que vous avez créé la boîte de dialogue avant de définir les préférences du constructeur :)