Bonjour à tous,

Voilà je suis dans la constitution d'une Library perso et je rencontre quelque difficulté...
Alors j'ai une class DialogFragmentYesNo qui extends de DialogFragment et qui contient des interfaces pour faire des retour informations ( CallBack ).

Jusque là tout va bien mon DialogFragmentYesNo si je l'utilise dans une ActionBarActivity ça passe.

Par contre si je l'utilise dans un Fragment là non...

Je suis dans un projet qui a un viewPager et qui contient différent Fragment donc il faut absolument que je trouve une solution ^^

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
L'erreur rencontré : 
 
FATAL EXCEPTION: main
    java.lang.ClassCastException: fr.ax.volumeboster.viewPager.volumeBoosterActivity@4208e4d0 must implement OnCallBack
J'ai cette erreur lorsque je fait dans mon DialogFragment :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mCallbacks = (CallbacksDialogFragmentYesNo) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement   CallbacksDialogFragmentYesNo");
        }
    }
Extrait de mon code du DialogFragment :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
 
public class DialogFragmentYesNo extends DialogFragment {
 
    /**
     * Callback interface through which the fragment will report the
     * task's progress and results back to the Activity.
     */
    public static interface CallbacksDialogFragmentYesNo {
        public void onClickPositiveButton();
        public void onClickNegativeButton();
    }
 
    private CallbacksDialogFragmentYesNo mCallbacks = null;
 
    Activity mContext;
    String mTitle;
    String mMessage;
    String mPositiveButton;
    String mNegativeButton;
 
    public DialogFragmentYesNo(Activity mContext) {
        this.mContext = mContext;
    }
 
    /**
     * Constructeur
     * @param mTitle
     * @param mMessage
     * @param mPositiveButton
     * @param mNegativeButton
     */
    public DialogFragmentYesNo(Activity mContext,String mTitle, String mMessage, String mPositiveButton, String mNegativeButton) {
        this.mContext = mContext;
        this.mTitle = mTitle;
        this.mMessage = mMessage;
        this.mPositiveButton = mPositiveButton;
        this.mNegativeButton = mNegativeButton;
    }
 
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mCallbacks = (CallbacksDialogFragmentYesNo) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement CallbacksDialogFragmentYesNo");
        }
    }
 
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
        alertDialogBuilder.setTitle(mTitle);
        alertDialogBuilder.setMessage(mMessage);
        alertDialogBuilder.setPositiveButton(mPositiveButton, new DialogInterface.OnClickListener() {
 
            @Override
            public void onClick(DialogInterface dialog, int which) {
                mCallbacks = (CallbacksDialogFragmentYesNo) getActivity();
                mCallbacks.onClickPositiveButton();
                dialog.dismiss();
            }
        });
        alertDialogBuilder.setNegativeButton(mNegativeButton, new DialogInterface.OnClickListener() {
 
            @Override
            public void onClick(DialogInterface dialog, int which) {
                mCallbacks = (CallbacksDialogFragmentYesNo) getActivity();
                mCallbacks.onClickNegativeButton();
                dialog.dismiss();
            }
        });
 
 
        return alertDialogBuilder.create();
    }
 
 
}
Ça fonctionne parfaitement lorsque j'appel mon DialogFragment dans une ActionBarActivity mais dans un Fragment pas moyen...

Extrait du code pour l'appel de mon DialogFragment :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 
DialogFragment newInstance = new DialogFragmentYesNo(mActivity);
newInstance.show(fm,"DialogFragmentYesNo");
 
// fm c'est mon FragmentSupportManger()
J'ai essayé de passé mon Activity ou y'a mon pager à mon Fragment puis à mon DialogFragment mais pas moyen...

mCallBack est soit null ou soit arrive pas à le Caster !

L'interface est bien entendu implementer.

Je développe sous Android Studio 0.3.4 - Gradle 1.8 - Mac OS

Si vous auriez une astuce je suis preneur ^^

Cordialement,