DialogFragment ne s'affiche pas

Lors de la dernière, j'ai trouvé ce qu'est le problème...

Si vous avez une fonction comme ceci:

public void test()
{
    DialogFragment dlg = new LoginDialog();
    dlg.show(getSupportFragmentManager(), "login");
}

La boîte de dialogue n'apparaîtra que lorsque le test() fini, je ne suis pas sûr si c'est la seule façon d'Android dialogue fonctionne, mais je vais certainement lire plus sur ce...


Question D'Origine:

Je suis nouveau sur android monde, quelqu'un peut-il éclairer?

dlg.show() exécutée sans exception, mais seulement rien ne se passe, que dois-je faire pour savoir quel est le problème? Le projet est à l'aide de l'Androïde 2,2 de l'API.

public class MainActivity extends FragmentActivity
{
    ...
    DialogFragment dlg = new LoginDialog();
    dlg.show(getSupportFragmentManager(), "login");
}

La boîte de dialogue mise en page:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText
    android:id="@+id/username"
    android:inputType="textEmailAddress"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:layout_marginBottom="4dp"
    android:hint="username" />
<EditText
    android:id="@+id/password"
    android:inputType="textPassword"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="4dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:layout_marginBottom="16dp"
    android:hint="password"/>
</LinearLayout>

La classe de boîte de dialogue:

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;

public class LoginDialog extends DialogFragment
{
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        //Get the layout inflater
        LayoutInflater inflater = getActivity().getLayoutInflater();

        //Inflate and set the layout for the dialog
        //Pass null as the parent view because its going in the dialog layout
        builder.setView(inflater.inflate(R.layout.login_dialog, null))
        //Add action buttons
               .setPositiveButton("Sign In", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       //sign in the user ...
                   }
               })
               .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                        //do something
                   }
               });
        return builder.create();
    }
}
  • Êtes-vous sûr que le premier bit de votre code est appelé, essayez de mettre finish() droit avant de créer votre boîte de dialogue. Si votre application s'arrête, puis il ya quelque chose de mal avec votre boîte de dialogue, mais si elle ne ferme pas alors cela signifie que votre code n'est pas d'atteindre le lieu où il crée une boîte de dialogue
  • Oui, il a été appelé, parce que j'ai mis un point d'arrêt, et c'était déclenchée.
  • avez-vous essayé de supprimer l'affichage personnalisé et il suffit de mettre un contenu de texte? Cela fonctionne si vous le faites? Je ne suis pas sûr que le parent null est correct, peut-être que vous devez trouver le point de vue avec id R.id.layout_root et de lui donner en tant que parent à votre inflate(..)
InformationsquelleAutor agou | 2012-11-11