0

値を入力せずに保存ボタンをクリックすると、ダイアログが消えます。ダイアログボックスを表示して、検証を行いたいです。誰かが知っていれば助けてください。

これが私のコードです:

 TextView tvUserName=new TextView(this);
            TextView tvPassword=new TextView(this);
            TextView tvURL=new TextView(this);
            final EditText etUserName=new EditText(this); 
            final EditText etPassword=new EditText(this);
            final AlertDialog.Builder alert = new AlertDialog.Builder(this);    
            LinearLayout login= new LinearLayout(this);
            login.setOrientation(1); //1 is for vertical orientation
            tvUserName.setText(getResources().getString(R.string.username));
            tvPassword.setText(getResources().getString(R.string.password));
            login.addView(tvURL);
            login.addView(etURL);
            login.addView(tvUserName);
            login.addView(etUserName);
            login.addView(tvPassword);
            etPassword.setInputType(InputType.TYPE_CLASS_TEXT |InputType.TYPE_TEXT_VARIATION_PASSWORD);
            login.addView(etPassword);
            alert.setView(login);
            alert.setTitle(getResources().getString(R.string.login));
            alert.setPositiveButton(getResources().getString(R.string.login), new DialogInterface.OnClickListener() {             
                public void onClick(final DialogInterface dialog, int whichButton) {   
                    strUserName=etUserName.getText().toString();
                    XmlUtil.username=strUserName;
                    strPassword=etPassword.getText().toString();
                    strhwdXml=etURL.getText().toString();
                    if((strUserName.length()==0)||(strPassword.length()==0){
    Toast.makeText(getBaseContext(),"Please enter username and password", Toast.LENGTH_SHORT).show();

                    }else {
                        Toast.makeText(getBaseContext(),"Success", Toast.LENGTH_SHORT).show();
                    }
4

3 に答える 3

1
   private void showAlertBox() {
        AlertDialog alertBox = null;
        alertBox = new AlertDialog.Builder(this).create();
        alertBox.setTitle("titleText");
        alertBox.setMessage("messageText");
        alertBox.setCancelable(false);

        LayoutInflater inflater = LayoutInflater.from(this);
        View alert_webview = inflater.inflate(R.layout.alert_layout, null);
        alertBox.setView(alert_webview);
        btnfromlayout = (Button) alert_webview.findViewById(R.id.btnclose);
        btnfromlayout.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // Whatever you want on click...compare
                // if(strUserName.equalsIgnoreCase("") ||
                // strPassword.equalsIgnoreCase("")){
                // Your toast msg
                // }else{
                // cAlert.dismiss();
                // }
                Log.i("Close", "Close");
            }
        });

        alertBox.show();
    }


@Override
    public void onClick(View v) {
        int vId = v.getId();
        switch (vId) {
        case R.id.btnclose:
            //Whatever you want on click...compare
//if(strUserName.equalsIgnoreCase("") || strPassword.equalsIgnoreCase("")){
//Your toast msg
//}else{
//          cAlert.dismiss();
//}
            Log.i("Close", "Close");
            break;
        default:
            break;
        }

    }

R.layout.YOUR_XML_LAYOUT_FILE

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txtcustmessage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Txt custom Layout For Alert" />

    <Button
        android:id="@+id/btnclose"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Close Custom" />

</LinearLayout>


/// 上記のレイアウトのように、デザインを使用してログイン コントロールの独自のレイアウトを作成し、レイアウトと必要なアクションに従ってクリック リスナを設定できます

于 2012-04-16T08:01:08.963 に答える
0

そのような AlertDialog を作成する最善の方法は、アクティビティ用に作成するのと同じように、新しいカスタム レイアウトを作成することだと思います。setPositiveButton などを使用している場合、押されたときにデフォルトでダイアログを閉じます。

于 2012-04-16T08:02:32.387 に答える
0

setpositivebutton を使用する代わりに、ボタンも含めることをお勧めします。ボタンがあれば、好きなようにできます。

于 2012-04-16T08:35:15.970 に答える