2

次のコードを使用してSDカード上のファイルを削除しようとしましたが、機能しません。これが削除するオプションを示すコンテキストメニューですが、それを押しても何も起こりません。ちなみに、「pass」は私のアプリによってsdcardに作成されたディレクトリです。

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
            super.onCreateContextMenu(menu, v, menuInfo); 
                menu.setHeaderTitle("Context Menu");  
                menu.add(0, v.getId(), 0, "delete");  
                menu.add(0, v.getId(), 0, "wtever");  
            }  


        @Override  
        public boolean onContextItemSelected(MenuItem item) {  
            if(item.getTitle()=="delete"){function1(item.getItemId());}  
            else if(item.getTitle()=="wtever"){function2(item.getItemId());}  
            else {return false;}  
        return true;  
        }  

        public void function1(int id){  
            Toast.makeText(this, "function 1 called", Toast.LENGTH_SHORT).show();  
            File folder = Environment.getExternalStorageDirectory();
            String fileName = folder.getPath() + "/pass/hello.pdf";

            File myFile = new File(fileName);
            if(myFile.exists())
                myFile.delete();

        }  

//リストクラス

 public class PDFListActivity extends ListActivity {
            ArrayAdapter<String> adapter;
            int clickCounter=0;
            ArrayList<String> listItems=new ArrayList<String>();
            private File[] imagelist;
            String[] pdflist;


        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.mainlistpdf);
              File images=new File(Environment.getExternalStorageDirectory(), "pass");
                imagelist = images.listFiles(new FilenameFilter(){  
                        public boolean accept(File dir, String name)  
                        {    

                                return ((name.endsWith(".pdf")));  
                        }  
                });

                pdflist = new String[imagelist.length];
                for(int i = 0;i<imagelist.length;i++)
                {
                        pdflist[i] = imagelist[i].getName();
                }
                this.setListAdapter(new ArrayAdapter<String>(this,
                                android.R.layout.simple_list_item_1, pdflist));
                ListView list=getListView();
                registerForContextMenu(list);
        }
4

2 に答える 2

1

このリンクを使用してカスタム コンテキスト メニューを作成し、メニュー ファイルを res/menu フォルダーに配置します。

または、以下のコードを置き換えてみてください

File folder = Environment.getExternalStorageDirectory();
String fileName = folder.getPath() + "/pass/hello.pdf";

 String fileName = Environment.getExternalStorageDirectory() + "/pass/hello.pdf";
于 2012-04-12T07:41:09.183 に答える
1

次のコードを使用して、sdcard からすべてのファイルとディレクトリを削除します::

public static boolean deleteDirectory(File path) {
        // TODO Auto-generated method stub
        if( path.exists() ) {
            File[] files = path.listFiles();
            for(int i=0; i<files.length; i++) {
                if(files[i].isDirectory()) {
                    deleteDirectory(files[i]);
                }
                else {
                    files[i].delete();
                }
            }
        }
        return(path.delete());
    }
于 2012-04-12T07:22:49.950 に答える