2017-03-06 23 views
1

が存在する場合、私は私の削除ボタンを改善しようとしているので、私はボタンを押すと、ファイルが存在しない、それは削除するファイルがないと言うトーストを起動する必要がある場合、私はこれを試してみましたチェックしましょう:NullPointerExceptionがファイルが

mBtnBorrar.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       if(file.exists()){ 
        file.getAbsoluteFile().delete(); 
        Toast.makeText(MainActivity.this, "File deleted..", Toast.LENGTH_SHORT).show(); 
       }else 
       { 
        Toast.makeText(MainActivity.this, "There is no file to delete.", Toast.LENGTH_SHORT).show(); 
       } 


      } 
     }); 

私のファイルをここで宣言されています

File file; 

File path = new File(Environment.getExternalStorageDirectory() 
       .getPath()); 

     if (!path.exists() && !path.mkdirs()) { 
      throw new IOException("No se pudo crear el directorio del archivo."); 
     }else{ 

      try { 
       file = File.createTempFile("audio", ".3gp", path); 
      } catch (IOException e) { 
      } 

     } 

今の問題は、私が使用してファイルを削除しようとする場合、私はnullpointerexceptionを得ればということですが、私は最初のファイルを作成した場合、私は削除それは正常にしてから、もう一度[削除]ボタンを押すとそこに例外が表示されます何のファイルがありませんが、私は、ファイルを作成せずにボタンを押すと、アプリの起動時にそのファイルを削除することがあるかどうかを確認dosnt。

+1

archivo.getAbsoluteFileものです()(削除)。それはファイルがarchivoであると言うごめん – zombie

+0

@zombieは、私はそれを変更するのを忘れました。 –

+0

あなたのコードの第2部分で行ったように、 'onClick'をチェックしようとします。 – zombie

答えて

1

コードfile = File.createTempFile("audio", ".3gp", path);を実行するまで、filenullになります。ファイルを作成する前に削除ボタンをテストしている場合は、これが該当します。単純なヌルチェックはこれを処理する一般的な方法です。

EDIT:は、もう一つの方法は、ファイルが最初onClick()のフラグをチェックし作成されていたかどうかを示すフラグを設定することですonClick()

 if(file != null) { 
      if(file.exists()){ 
       file.getAbsoluteFile().delete(); 
       Toast.makeText(MainActivity.this, "File deleted..", Toast.LENGTH_SHORT).show(); 
      }else 
      { 
       Toast.makeText(MainActivity.this, "There is no file to delete.", Toast.LENGTH_SHORT).show(); 
      } 
     } 

にはnullチェックを変更しました。

FYI、linkが参照するページ)

+1

チェックはonClickメソッドで行わなければなりません – zombie

+0

こんにちは@ Gary99 imはonclickメソッドここでnullポインタ例外を与える場合(file.exists()){.... –

+0

こんにちは私はonclickの中で、{(ファイル!= null)の場合、それはputing解決しました!ありがとう –