2013-07-25 22 views
1
public String[] get_file_names_from_SD() /* Compiler complains here */ 
{ 
    String state = Environment.getExternalStorageState(); 
    if (state.equals(Environment.MEDIA_MOUNTED)) { 
     File root = Environment.getExternalStorageDirectory(); 
     File dir = new File(root.getAbsolutePath() + "/journal_storage"); 
     if (dir.exists() & dir.isDirectory()) { 
      return (dir.list());    
     } 

    } else { 
     Toast.makeText(getActivity(), "Media Mounted Issue", Toast.LENGTH_SHORT).show(); 
    } 
} 

所以我返回dir.list()其中将包含一个字符串数组,但由于某种原因,编译器是否显示错误“此方法必须返回类型的字符串[]的结果”。根据Android documentation,该方法返回一个String数组。编译错误而返回字符串数组

任何人都可以告诉我我做错了什么吗?

+2

,而不是'&',应该有''&&病情.. :) –

回答

2

你方法的所有代码路径是不是返回String[]。您还应该返回或null 块,因为else块是您方法的可到达代码块。

public String[] get_file_names_from_SD() /*Compiler complains here*/ 
    { 
     String state = Environment.getExternalStorageState(); 
     if(state.equals(Environment.MEDIA_MOUNTED)) 
     { 
      File root = Environment.getExternalStorageDirectory(); 
      File dir = new File(root.getAbsolutePath()+"/journal_storage"); 
      if(dir.exists() & dir.isDirectory()) 
      { 
       return(dir.list()); 

      } 

     } 
     else 
     { 
     Toast.makeText(getActivity(), "Media Mounted Issue", Toast.LENGTH_SHORT).show(); 
     //--> return null; 
     } 
    } 
1

PUIT此行的else语句后:

return null; 

这将保证你的方法成功地返回。但是,您应该注意您调用此方法的地方NullPointerException

1

并非所有的调用路径都会导致返回一个String [],例如如果你的SD卡没有安装,控制权转到else块并且不返回任何东西。您可以简单地在块的末尾添加return null;语句来结束它,以使错误消失。

1

你else块不返回任何东西..那Y中的错误被抛出

else 
    { 
    Toast.makeText(getActivity(), "Media Mounted Issue", Toast.LENGTH_SHORT).show(); 
    // return something here .. If nothing , return null 
    }