2017-10-12 14 views
0

私は、ボタンのクリックで私のフラグメントからダイアログを呼び出すアプリケーションで作業していますが、私の問題はボタンをクリックしてダイアログが表示されますが、鈍い色で表示されることです。そして、私が再びダイアログをクリックすると、その背景が白色に変わります。だから、なぜこのように起こっているのか知りたいだけです。ダイアログを正しく表示できない

コードは、最初

ダークスクリーンショットの中に表示されたときに

 sms = (ImageView) v.findViewById(R.id.sms); 
    sms.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (!admin_id.equals("0") && status.equals("A")) { 
       DialogSMS dialogSMS = new DialogSMS(getActivity(), getContext()); 
       dialogSMS.show(); 
      } else { 
       Toast.makeText(getActivity(), getResources().getString(R.string.disable_click), Toast.LENGTH_SHORT).show(); 

      } 

     } 

    }); 

ダイアログコードダイアログの

public class DialogSMS extends Dialog { 

Context context; 
ProgressDialog progressDialog; 
SharedPreferences sharedPreferences; 
SharedPreferences.Editor editor; 
public static final String MY_PREF = "pref"; 
public static final String IS_SMS_SUBSCRIBE = "sms_status"; 
EditText etPostalCode; 
EditText phoneNumber; 
Dialog d; 


public DialogSMS(Activity a, Context context) { 
    super(a); 
    this.context = context; 
} 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setBackgroundDrawableResource(android.R.color.transparent); 
    progressDialog = new ProgressDialog(context); 

    sharedPreferences = context.getSharedPreferences(MY_PREF, Context.MODE_PRIVATE); 

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(context); 
    alertDialog.setMessage(R.string.app_sms_dialog_msg); 
    alertDialog.setPositiveButton(R.string.app_close_dialog_msg_yes, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 

      SessionManager session = new SessionManager(context); 

      if (session.isSmsSubscribed()) { 

       AlertDialog.Builder alertDialog = new AlertDialog.Builder(context); 
       alertDialog.setMessage(R.string.app_sms_unsubscribe); 
       alertDialog.setPositiveButton(R.string.app_close_dialog_msg_yes, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 

         unSubscribeSMS(); 
         dialog.cancel(); 
        } 
       }); 
       alertDialog.setNegativeButton(R.string.app_close_dialog_msg_no, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.cancel(); 
        } 
       }); 
       alertDialog.show(); 


      } else { 
       d = new Dialog(getContext()); 
       d.setContentView(R.layout.dialog_select_sms); 
       etPostalCode = (EditText) d.findViewById(R.id.etPostalCode); 
       phoneNumber = (EditText) d.findViewById(R.id.phoneNumber); 


       Button btnSend = (Button) d.findViewById(R.id.btnSend); 
       d.getWindow().setBackgroundDrawableResource(android.R.color.transparent); 

       btnSend.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 


         String mobile = phoneNumber.getText().toString(); 
         String postalCode = etPostalCode.getText().toString(); 

         validateFields(mobile, postalCode); 

         //subscribeSMS(postalCode, mobile); 
         // d.cancel(); 
        } 
       }); 
       d.show(); 
       dialog.cancel(); 

      } 
     } 
    }); 
    alertDialog.setNegativeButton(R.string.app_close_dialog_msg_no, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.cancel(); 
     } 
    }); 
    alertDialog.show(); 
} 

そして今、スクリーンショットのリンクをクリックして、ボタン上の断片からダイアログを起動します開いているポップアップ:

enter image description here

ホワイトダイアログ再びダイアログをクリックすると:

enter image description here

答えて

0

利用dialog.dismiss()代わりのdialog.cancel()

1

私はちょうどそれのように起こっている理由を知りたいですこの

ここ

DialogSMS dialogSMS = new DialogSMS(getActivity(), getContext()); 
dialogSMS.show(); 

は、ダイアログを表示し、あなたがそのがダイアログの上キャンセルダイアログ上のクリックされたとき、あなたもAlertDialogを作成し、それを再度示し、

AlertDialog.Builder alertDialog = new AlertDialog.Builder(context); 
alertDialog.setMessage(R.string.app_sms_dialog_msg); 
-------------------------- 
alertDialog.show(); 

さDialogSMSの内部ます。

実際にDialogSMS内にAlertDialogを作成する必要はありません。

AlertDialogが必要な場合は、なぜDialogを表示していますか?

*これはあなたを助けるかもしれない - * だけ

sms.setOnClickListener

AlertDialogあなたの欲求を表示中にあなたのif-else条件を持参します
関連する問題