0

私は2つと2つAlert Dialogを持つものを作成し、値をフェッチし、値が一致する場合は何らかの操作を行っています。どこが悪いのかわからない…EditTextButtonEditTextAlertDialog

私のコードは次のようになります::

public class MainActivity extends Activity 
{
private Button btn_click;
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn_click=(Button)findViewById(R.id.btn_click);
    btn_click.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View arg0) 
        {
            showDialog(0);
        }
    });
}

@Override
protected Dialog onCreateDialog(int id) 
{
    switch (id) 
    {
    case 0:
        // This example shows how to add a custom layout to an AlertDialog
        android.app.AlertDialog.Builder login = new android.app.AlertDialog.Builder(this);

        try
        {

            LayoutInflater factory = LayoutInflater.from(this);
            final View textEntryView = factory.inflate(R.layout.login_dialog, null);

            final EditText username_alert = (EditText) textEntryView.findViewById(R.id.username);
            final EditText password_alert = (EditText) textEntryView.findViewById(R.id.password);

            login.setTitle("Login").setIcon(R.drawable.ic_launcher).setView(textEntryView)

            .setPositiveButton("Login", new DialogInterface.OnClickListener()
            {
                public void onClick(DialogInterface dialog, int whichButton) 
                {
                    /* User clicked OK so do some stuff */
                    String uname_alert=username_alert.getText().toString();
                    String pass_alert=password_alert.getText().toString();

                    if(uname_alert.equals("aaaa") && pass_alert.equals("aaaa"))
                    {
                        //do Something........
                    }
                    else
                    {
                        showDialog(0);
                    }
                }
            })
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
            {
                public void onClick(DialogInterface dialog, int whichButton) 
                {
                    /* User clicked cancel so do some stuff */
                }
            });
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return login.create();
    }
    return null;
}
  }

私の質問が明確であることを願っています.......私を助けてください..事前に感謝します..... :)

4

5 に答える 5

0

ダイアログから showDialog を呼び出す前に、既存のダイアログを閉じる必要がありますか?

于 2012-08-24T13:08:46.573 に答える
0

現在、毎回新しいダイアログを作成しています。

一度作成したダイアログをクラス レベルの変数に保持し、再利用してみてください。お気に入り :

初めて
dialog=login.create(); ダイアログを返します。次回以降はダイアログのみを返す

于 2012-08-24T13:09:31.550 に答える
0

AlertDialog内部で作成しようとしていると思いますが、AlertDialogそれは不可能Toastです。代わりに、警告メッセージを表示するために使用できます。

カスタムについてはこちらの記事をご覧ください AlertDialog

于 2012-08-24T13:09:36.160 に答える
0

問題は操作の順序です。ダイアログが閉じられる前にクリックハンドラーが呼び出さshowDialog()れるため、その呼び出しは何もしません。次に、ハンドラ メソッドが戻った直後に、それ自体をAlertDialog呼び出しdismiss()(デフォルトの動作)、消えます。

この機能のより良い実装はAlertDialog、ハンドラーが呼び出される前にボタンのクリックをカスタマイズしてインターセプトするDialogInterfaceことです。これにより、ダイアログを再表示させるのではなく、検証を実行し、その場合にダイアログをまったく閉じないようにすることができます。真実はAlertDialog、このケースを処理するための十分な設備が整っていないことです。ここでの最善の解決策は、四角いペグを丸い穴に合わせようとせず、おそらくDialog必要なすべてを実行するカスタム実装を行うことです.

于 2012-08-24T13:19:23.590 に答える
0

この回答が遅れていることは承知しています。しかし、将来の探求者のために。私は同じ問題を抱えていて、 . hide() . show() と . dismiss() の組み合わせが反応しません。おそらくシステムにはしばらく時間がかかりますが、その後は正常に機能しています。

if (!SDCartConnected())
{
        Handler handler = new Handler(); 
        handler.postDelayed(new Runnable(){
            public void run() {
                showDialog(Const.DIALOG_SDCARD_MISSING);}}, 2000);  
}
于 2012-12-06T17:57:07.953 に答える