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
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une meilleure façon par essai et erreur, et de la pêche, à travers des exemples. Je pense que. Je ne sais pas si il ya un inconvénient à le faire de cette façon, mais voici ce qui a fonctionné. Je vais maintenant essayer et d'ajouter des contrôles et des événements, mais cela répond à ma question d'origine.
Personnalisé DialogFragment:
Montrant la boîte de Dialogue:
OriginalL'auteur Tsar Bomba
Vous havn't dans MainActivity créé fragment. FragmentManager fm = getSupportFragmentManager();
bel exemple
http://www.androidbegin.com/tutorial/android-dialogfragment-tutorial/
Aussi, je ne vois pas l'avantage par rapport à mon approche. Pourquoi l'obtention de la FragmentManager comme si, être inférieur? ` finale privée android.app.FragmentManager fragMgr = ce.getFragmentManager(); <br> <br> @Override<br> protected void onCreate(Bundle savedInstanceState)<br> {<br> super.onCreate(savedInstanceState);<br> setContentView(R. layout.activity_main);<br> <br><br> //affichage DialogFragment<br> MyDialogFragment myDiag = new MyDialogFragment();<br> myDiag.show(fragMgr, "Diag");<br> }<br> `
Désolé pour la pâtée. A tenté de corriger le commentaire, mais SA ne me laisse pas au bout de 5 minutes.
Dalvik est litle d'autres comme Java machine. Je préfère l'approche expliqué dans developer.android.com/reference
OriginalL'auteur eurosecom