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()
,它将包含一个字符串数组但由于某种原因编译器显示错误“此方法必须返回String []类型的结果。”
根据Android documentation,该方法返回一个字符串数组。
任何人都可以告诉我我做错了吗?
答案 0 :(得分:2)
您方法的所有代码路径都 NOT 返回String[]
。您应该还返回String[]
块中的null
或else
,因为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 :(得分:1)
在你的其他声明之后这条线:
return null;
这将保证您的方法将成功返回。但是,您应该注意调用此方法的NullPointerException
。
答案 2 :(得分:1)
并非所有的调用路径都会导致返回String [],例如如果您的SD卡未安装,则控制将转到else块并且不返回任何内容。您可以在块的末尾使用return null;
语句结束它,以使该错误消失。
答案 3 :(得分:1)
你的else块没有返回任何东西..那就是抛出错误
else
{
Toast.makeText(getActivity(), "Media Mounted Issue", Toast.LENGTH_SHORT).show();
// return something here .. If nothing , return null
}