2017-10-12 15 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(); 

DialogSMS 당신은 또한에 AlertDialog를 생성하고 다시 보여주고있다의 대화와 내부에 표시됩니다,

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

당신은이 대화 상자의에 취소 대화 상자를 클릭하는 .

실제로 DialogSMS에서 AlertDialog를 만들 필요가 없습니다.

AlertDialog가 필요한 경우 왜 Dialog를 표시합니까? 그냥

sms.setOnClickListener

내부에있는 경우 - 다른 조건을 가져오고 당신의 욕망이

을에 AlertDialog 보여 * 을 -

*이 당신을 도울 수