我正在开发一个应用程序,我在按钮单击时从我的片段调用一个对话框但我的问题是,当我单击一个按钮然后出现对话框但它显示为暗淡的颜色。当我再次点击对话框时,它的背景变为白色。所以,我只想知道为什么会这样。
在按钮点击时从片段调用对话框的代码
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();
}
现在首次出现对话框的屏幕截图链接
打开弹出窗口时的黑屏幕截图:
再次点击对话框时出现白色对话框:
答案 0 :(得分: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?
*这可能对你有帮助 - * 只需将你的if-else条件带入
sms.setOnClickListener
并显示您的愿望AlertDialog
答案 1 :(得分:0)
使用dialog.cancel()
代替@ECHO OFF
PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~xyz0.ps1""' -Verb RunAs}"
PAUSE