1

現在、編集テキストが画面に表示された警告ダイアログを維持しようとしています。いつものように、OK ボタンとキャンセル ボタンがあり、プロセスにエラー処理を少し追加したかったのです。ユーザーが編集テキスト ボックスにテキストを入力せずに [OK] を押した場合、エラーを通知するトースト メッセージが表示されるようにします。[OK] を押したい場合でも何かを入力する必要があるため、ダイアログ ボックスは表示されたままにする必要があります。

これは私がこれまでに持っているものです。ところで、ユーザーがドロップダウン リストから選択した内容に基づいて、ダイアログ ボックスがポップアップ表示されます。ダイアログボックスを維持するための助けをいただければ幸いです!!!

これが私のコードです:

    regionSpinner.setOnItemSelectedListener(new OnItemSelectedListener()
    {
        @Override
        public void onItemSelected(AdapterView<?> parent, View v, int position, long rowId)
        {
            regionSelect = regionSpinner.getItemAtPosition(position).toString();
            regionInteger = (int) regionSpinner.getItemIdAtPosition(position);




            chosenRegion = regionSpinner.getSelectedItem().toString();

            if (chosenRegion.equals(ENTER_OPTION))

            {
                final AlertDialog.Builder alert = new AlertDialog.Builder(LoginActivity.this);

                alert.setTitle(TITLE_DIALOG);

                // Set an EditText view to get user input
                 final EditText input = new EditText(LoginActivity.this);
                alert.setView(input);

                alert.setPositiveButton("Ok", new DialogInterface.OnClickListener()
                {
                    public void onClick(DialogInterface dialog, int whichButton)
                    {
                        if(input.getText().toString().length() > 0 && input != null)
                        {
                        textValueForEnteredRegion = input.getText().toString();
                        Toast.makeText(getApplicationContext(), "Input Accepted", Toast.LENGTH_SHORT).show();


                        dialog.dismiss();
                        //added soft keyboard code to make keyboard go away.
                        getWindow().setSoftInputMode(
                                  WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);


                        }
                        else
                        {

                            Toast.makeText(getApplicationContext(), "You must enter a selection.", Toast.LENGTH_SHORT).show();

                        }
                    }


                });



                alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
                {
                    public void onClick(DialogInterface dialog, int whichButton)
                    {
                        // Canceled.
                        dialog.dismiss();

                        //added soft keyboard code to make keyboard go away.
                        getWindow().setSoftInputMode(
                                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);


                    }
                });

                alert.show();



            }


        }



        @Override
        public void onNothingSelected(AdapterView<?> arg0)
        {

        }


    });
4

2 に答える 2

2

ボタンの onClick メソッドをオーバーライドします。

参照: Android SDK オーバーライド AlertDialog イベント

    AlertDialog.Builder build=new AlertDialog.Builder(this);
build.setMessage("This is a message, dawg.")
.setPositiveButton("Awesomesauce.", new OnClickListener()
{
    public void onClick(DialogInterface dialog, int id)
    {
        //Change stuff in here so that dialog.dismiss() is not called.
        //dialog.dismiss(); //closes the window
    }
};
AlertDialog myAlert=build.create();
myAlert.show();

編集: 既にこれを持っているようです... onPostitiveButton の onClick メソッドで dialog.dismiss() を取り除き、EditText にテキストが含まれているかどうかを確認する条件をその周りに配置するだけです。

于 2012-08-02T15:39:33.223 に答える
1

AlertDialog をキャンセルできないようにするには、このメソッドを呼び出す必要がありますalert.setCancelable(false);

Edittext が空の場合にトースト メッセージを表示するには、Edittext の内容をチェックする必要があります。

alert.setPositiveButton("Ok", new DialogInterface.OnClickListener()
                {
                    public void onClick(DialogInterface dialog, int whichButton)
                    {
                        if(!input.getText().toString().equals("")) // if not empty do what u were doing
                        {
                        textValueForEnteredRegion = input.getText().toString();
                        Toast.makeText(getApplicationContext(), "Input Accepted", Toast.LENGTH_SHORT).show();


                        dialog.dismiss();
                        //added soft keyboard code to make keyboard go away.
                        getWindow().setSoftInputMode(
                                  WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);


                        } else{ // here edittext is empty.. show user a toast and return,
 Toast.makeText(getApplicationContext(), "Input is empty", Toast.LENGTH_SHORT).show();


}
于 2012-08-02T15:46:34.980 に答える