Exemple Simple de DialogFragment - exemple de code ne fonctionne pas pour moi

Veuillez pardonner mon ignorance, c'est ma première semaine sur le travail en tant que développeur Android. Bien que j'ai quelques années de Java sous ma ceinture, je suis un noob complet dans le monde Android.

Je suis simplement en train d'essayer de créer une boîte de dialogue et afficher. De la recherche, je trouvais que c'était la méthode préférée:

https://developer.android.com/guide/topics/ui/dialogs.html

Donc, je suis allé en bas de la route et a giflé un exemple de base ensemble, et j'obtiens une exception lors de l'exécution:

09-11 11:57:28.914: E/AndroidRuntime(1217): FATAL EXCEPTION: les principales
09-11 11:57:28.914: E/AndroidRuntime(1217): Processus: com.myapp.mobile,
PID: 1217 09-11 11:57:28.914: E/AndroidRuntime(1217):
java.lang.RuntimeException: Impossible de démarrer l'activité
ComponentInfo{com.myapp.mobile/com.myapp.mobile.MainActivity}:
java.lang.IllegalStateException: l'Activité a été détruit 09-11
11:57:28.914: E/AndroidRuntime(1217):
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
09-11 11:57:28.914: E/AndroidRuntime(1217):
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
09-11 11:57:28.914: E/AndroidRuntime(1217):
android.app.ActivityThread.l'accès de 800$(ActivityThread.java:135) 09-11
11:57:28.914: E/AndroidRuntime(1217):
android.app.ActivityThread$H. handleMessage(ActivityThread.java:1196)
09-11 11:57:28.914: E/AndroidRuntime(1217):
android.os.Gestionnaire d'.dispatchMessage(Handler.java:102) 09-11
11:57:28.914: E/AndroidRuntime(1217):
android.os.Looper.boucle(Looper.java:136) 09-11 11:57:28.914:
E/AndroidRuntime(1217):
android.app.ActivityThread.principale(ActivityThread.java:5017) 09-11
11:57:28.914: E/AndroidRuntime(1217):
java.lang.de réfléchir.La méthode.invokeNative(Native method) 09-11
11:57:28.914: E/AndroidRuntime(1217):
java.lang.de réfléchir.La méthode.invoke(la Méthode.java:515) 09-11 11:57:28.914:
E/AndroidRuntime(1217):
com.android.interne.os.ZygoteInit$MethodAndArgsCaller.exécuter(ZygoteInit.java:779)
09-11 11:57:28.914: E/AndroidRuntime(1217):
com.android.interne.os.ZygoteInit.principale(ZygoteInit.java:595) 09-11
11:57:28.914: E/AndroidRuntime(1217):
dalvik.système.NativeStart.principale(Native method) 09-11 11:57:28.914:
E/AndroidRuntime(1217): Causée par: java.lang.IllegalStateException:
L'activité a été détruit 09-11 11:57:28.914:
E/AndroidRuntime(1217):
android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1345)
09-11 11:57:28.914: E/AndroidRuntime(1217):
android.app.BackStackRecord.commitInternal(BackStackRecord.java:597)
09-11 11:57:28.914: E/AndroidRuntime(1217):
android.app.BackStackRecord.commit(BackStackRecord.java:575) 09-11
11:57:28.914: E/AndroidRuntime(1217):
android.app.DialogFragment.show(DialogFragment.java:230) 09-11
11:57:28.914: E/AndroidRuntime(1217):
com.myapp.mobile.la boîte de dialogue.ActivationDialog.show(ActivationDialog.java:25)
09-11 11:57:28.914: E/AndroidRuntime(1217):
com.myapp.mobile.activer.L'Activation.ActivationCheck(Activation.java:11)
09-11 11:57:28.914: E/AndroidRuntime(1217):
com.myapp.mobile.MainActivity.onCreate(MainActivity.java:20) 09-11
11:57:28.914: E/AndroidRuntime(1217):
android.app.De l'activité.performCreate(l'Activité.java:5231) 09-11
11:57:28.914: E/AndroidRuntime(1217):
android.app.L'Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-11 11:57:28.914: E/AndroidRuntime(1217):
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
09-11 11:57:28.914: E/AndroidRuntime(1217): 11 ... plus

L'appel de MainActivity:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //check user activation
    ActivationDialog dialog = new ActivationDialog();
    dialog.show();
}

ActivationDialog classe:

public class ActivationDialog extends FragmentActivity implements BaseDialogFragment.BaseDialogListener
{
    public ActivationDialog()
    {
    }

    @Override
    public void onDialogPositiveClick(DialogFragment dialog)
    {
    }

    @Override
    public void onDialogNegativeClick(DialogFragment dialog)
    {
    }

    public void show()
    {
        BaseDialogFragment dialogFrag = new BaseDialogFragment();
        dialogFrag.show(this.getFragmentManager(), "activationDialog");
    }
}

De la classe de Base:

public class BaseDialogFragment extends DialogFragment
{
    public interface BaseDialogListener
    {
        public void onDialogPositiveClick(DialogFragment dialog);
        public void onDialogNegativeClick(DialogFragment dialog);
    }

    BaseDialogListener dialogListener;

    @Override
    public void onAttach(Activity activity)
    {
        super.onAttach(activity);

        try
        {
            dialogListener = (BaseDialogListener)activity;
        }
        catch (ClassCastException e)
        {
            throw new ClassCastException(activity.toString() + " must implement NoticeDialogListener");
        }
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        builder.setMessage(R.string.dialog_base_message).setPositiveButton(R.string.dialog_base_ok, new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
            }
        }).setNegativeButton(R.string.dialog_base_cancel, new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
            }
        });

        return builder.create();
    }
}

OriginalL'auteur Tsar Bomba | 2014-09-11