我的应用程序有一个按钮,当用户按下按钮时会显示自定义DialogFragment
。 DialogFragment
显示如下:
if(searchDialog == null)
{
searchDialog = new SearchElementDialog();
searchDialog.setOnItemClickListener(searchElementItemClickListener);
}
searchDialog.show (getFragmentManager(), "SearchElement");
当用户完成时,以常规方式调用dismiss
并删除对话框。现在,当用户再次按下相同的按钮时,我希望显示相同的对话框,处于与用户离开时相同的可见状态,调用上面第一个块中的代码会显示对话框并恢复其可视状态,但是:
屏幕没有变暗,按下对话框外部不会忽略它,它背后的控件也没有响应。
当软键盘进入视图时,对话框不会移动。
在第一次展示一切都很好。是否无法再次显示相同的对话框实例?
答案 0 :(得分:1)
如果隐藏并显示对话框而不是整个片段,该怎么办。
当你想解雇电话时:
searchDialog.getDialog().dismiss();
当你想要展示它时:
searchDialog.getDialog().show();
答案 1 :(得分:0)
司马斯部分正确。显示getDialog()
时,null
不会返回Dialog
,但会在显示Dialog
时返回mDialog = getDialog()
。我把它存储在我班级的一个字段中
mDialog.show()
随后被称为
public class Ring {
public static void main(String[] args) {
boolean a = isFlip(args);
if(a) {
for (int i = 0; i < args.length; i++) {
System.out.print(args[i] + " ");
}
}else {
System.out.println("NO SOLUTION");
}
}
public static boolean isFlip(String[] args) {
for (int i = 0; i <args.length ; i++) {
args[i]=args[i].toLowerCase();
}
for (int i = 0; i < args.length-1 ; i++) {
for (int j = i+1; j <args.length ; j++) {
if (args[i].charAt(0)==(args[j].charAt(args[j].length()-1))){
String s= args[j];
args[j]=args[i];
args[i]=s;
}
}
}
for (int i = 0; i <args.length-1 ; i++) {
if((args[i+1].charAt(0)!=(args[i].charAt(args[i].length()-1)))){
return false;
}
}
if(args[args.length-1].charAt(args[args.length-1].length()-1)!=args[0].charAt(0)) return false;
return true;
}
}