У меня есть фрагмент, внутри которого я использую AlertDialog. Нет никаких проблем при закрытии AlertDialog в Activity, но когда я использовал тот же код в Fragment, AlertDialog не закрывает , пока я не нажимаю кнопку минимум 3 раза.AlertDialog внутри Фрагмент не закрывается при нажатии кнопки
Также после того, как я нажимаю кнопку Ok, alertDialog замерзает в течение 2 секунд, после чего отображаются сообщения Toast. Но диалог не закрывается.
Я также пробовал использовать dialog.dismiss()
. Но проблема остается такой же.
Вот мой класс CheckFragment.
public class ChecckFragment extends Fragment implements OnItemSelectedListener {
private static AlertDialog alertDialog;
private Context context
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this.getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//other codes....
View btnCheck = (Button) rootView.findViewById(R.id.btnSaveNew);
btnCheck.setOnClickListener(listener);
}
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
createCheckBox();
alertDialog.show();
}
}
//Function to create checkBox.
private void createCheckBox(){
final CharSequence[] checkSequences = {" Low "," Mid "," High "," Very High"};
final ArrayList<Integer> itemList = new ArrayList<>();
AlertDialog.Builder checkBuilder= new AlertDialog.Builder(context);
checkBuilder.setTitle("Select School Leaving Reason");
checkBuilder.setMultiChoiceItems(checkSequences, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) {
if (isChecked) {
itemList.add(indexSelected);
} else if (itemList.contains(indexSelected)) {
itemList.remove(Integer.valueOf(indexSelected));
}
}
});
checkBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
StringBuilder sb = new StringBuilder();
for(int str : itemList){
sb.append(","); //separating contents using semi colon
sb.append(str);
}
sb.deleteCharAt(0); //Delete chatacter at 0.
String string = sb.toString();
Toast.makeText(context, "Selected Items:"+ sb, Toast.LENGTH_LONG).show();
alertDialog.dismiss();//Called dismiss here but dialog doesnt closes
}
});
checkBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss();//Called dismiss here too but dialog doesnt closes
}
});
alertDialog = checkBuilder.create();
}
}
Я действительно застрял в парне. Пожалуйста помоги!!!!
Необходимо вызвать alertDialog = checkBuilder.create(); а затем alertDialog.show(); – Opiatefuchs
Я пробовал, но мое предупреждение еще не закрывается. – Crawler
Вы можете обновить свой код выше? – Opiatefuchs