2012-04-12 13 views
2

次のコードを使用してsdcard上のファイルを削除しようとしましたが、動作していません。 ここに私のアプリでSDカード上に作成されますが、削除するオプションを示すコンテキストメニューだが、私はそれを押したときに何も起こらない、道で、「パス」はディレクトリです: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); 
     } 
+0

に以下のコード

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

を交換してみてくださいあなたはログインしてはfunction1が呼び出されているかどうかを確認するかを持つことができますか?/ –

+0

はい、それが呼び出されます。私は乾杯のメッセージ "機能1" – AliDeV

答えて

1

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

または

String fileName = Environment.getExternalStorageDirectory() + "/pass/hello.pdf"; 
+0

最終的には動作しますが、リストをリフレッシュする必要があります。削除されたので、私は再び関数を呼び出さなければならない – AliDeV

+0

それは削除されましたが、まだメニューリストに表示されましたか? –

+0

の場合、効果を得るにはリストを更新する必要があります。 –

1

SDカードからすべてのファイルとディレクトリを削除するには、以下のコードを使用してください::

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()); 
    } 
+0

先進的な、しかし私は特定のファイルだけを削除したくない、私は – AliDeV

+0

を押して上記のコードからpath.delete()を削除するファイルを意味します。ディレクトリ –

+0

すべてのファイルを削除しますか?lol。いいえ、ファイルをクリックするだけです。 – AliDeV

関連する問題