Android 打开对话框

最常用的方法是使用onCreateDialog()方法创建对话框,这个网上写的很多,不多介绍,但是对于我这样的新手来说,连如何调用onCreateDialog()方法都不知道,那就应该深究深究了,花了半天时间看了很多博文,终于在一知半解下解决了打开目录,选择文件的问题。简单记录下来,便于以后使用:

一:首先要弄明白showDialog()、onPrepareDialog()和onCreateDialog()的关系:showDialog()调用createDialog()和onPrepareDialog(),其中createDialog()调用onCreateDialog()

二:

使用的是Button时

1
2
3
4
5
6
7
// 设置单击按钮时打开文件对话框
        findViewById(R.id.button_openfile).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                showDialog(int id);
            }
        });

使用的是Preference时

1
2
3
4
5
6
7
preference.setOnPreferenceClickListener(new OnPreferenceClickListener(){
                  @Override 
                  public boolean onPreferenceClick(Preference preference) {  
                      showDialog(int id);
                      return true
                  }
            });

三:Android开发 打开文件 选择文件对话框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    @Override
protected Dialog onCreateDialog(int id) {  
        Map<String, Integer> images = new HashMap<String, Integer>();
        // 下面几句设置各文件类型的图标, 需要你先把图标添加到资源文件夹
        images.put(OpenFileDialog.sRoot, R.drawable.filedialog_root);   // 根目录图标
        images.put(OpenFileDialog.sParent, R.drawable.filedialog_folder_up);    //返回上一层的图标
        images.put(OpenFileDialog.sFolder, R.drawable.filedialog_folder);   //文件夹图标
        images.put("xls", R.drawable.excel);    //excel文件图标
        images.put(OpenFileDialog.sEmpty, R.drawable.filedialog_root);
        Dialog dialog = OpenFileDialog.createDialog(id, this, "打开文件", new CallbackBundle() {
            @Override
            public void callback(Bundle bundle) {
                String filepath = bundle.getString("path");
                setTitle(filepath); // 把文件路径显示在标题上
            }
        },
        ".xls;",
        images);
        return dialog;     
}

四 

1
因为不同按钮的showDialog()都可以触发onCreateDialog()方法,因此需要加个识别条件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    static private int openfileDialogId = 0;
@Override
protected Dialog onCreateDialog(int id) {  
    if(openfileDialogId == id){
        Map<String, Integer> images = new HashMap<String, Integer>();
        // 下面几句设置各文件类型的图标, 需要你先把图标添加到资源文件夹
        images.put(OpenFileDialog.sRoot, R.drawable.filedialog_root);   // 根目录图标
        images.put(OpenFileDialog.sParent, R.drawable.filedialog_folder_up);    //返回上一层的图标
        images.put(OpenFileDialog.sFolder, R.drawable.filedialog_folder);   //文件夹图标
        images.put("xls", R.drawable.excel);    //excel文件图标
        images.put(OpenFileDialog.sEmpty, R.drawable.filedialog_root);
        Dialog dialog = OpenFileDialog.createDialog(id, this, "打开文件", new CallbackBundle() {
            @Override
            public void callback(Bundle bundle) {
                String filepath = bundle.getString("path");
                setTitle(filepath); // 把文件路径显示在标题上
            }
        },
        ".xls;",
        images);
        return dialog; 
    }
    return null;
}

  

Android 打开对话框,布布扣,bubuko.com

Android 打开对话框

上一篇:Android类似汽车仪表器


下一篇:Happy iron wedding’s Day