小编JaR*_*Ray的帖子

如何通过setCanceledOnTouchOutside事件取消DialogFragment时隐藏屏幕键盘

如果当前正在关注edittext并且用户在DialogFragment外部单击; 我希望屏幕键盘消失.当DialogFragment以这种方式被解雇时,我可以让它工作:

InputMethodManager imm;
public View onCreateView(LayoutInflater inflator, ViewGroup container,
        Bundle savedInstanceState) {
imm = (InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
...}

@Override 
public void dismiss(){
    imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
    super.dismiss();
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试通过触摸对话片段之外取消它时同样的事情,它将无法工作.我试图通过覆盖onCancel来做到这一点:

@Override
public void onCancel(DialogInterface dialog){
    imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
    super.onCancel(dialog);
}
Run Code Online (Sandbox Code Playgroud)

当外部触摸事件发生时调用该函数,但不删除键盘.

android dialogfragment

10
推荐指数
2
解决办法
4706
查看次数

AlertDialog不显示文件列表

AlertDialog.Builder load_alert = new AlertDialog.Builder(this);
            File list = new File("data/data/project/databases/");
            if(!list.exists() || !list.isDirectory()){
                return;
            }
            String [] fileList = list.list();

            load_alert.setMessage("Please select");     
            load_alert.setItems(fileList, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int item) {
                    Toast toast = Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG);
                    toast.show();
                }
            }); 
            load_alert.show();
Run Code Online (Sandbox Code Playgroud)

这应该将我的数据库文件夹的内容显示为alertdialog.我检查了fileList数组,并且正在填充它.由于某种原因,它不是通过setItems显示.有任何想法吗?

java android android-alertdialog

2
推荐指数
1
解决办法
1144
查看次数