我正在制作一个创建新文件的应用程序,当我这样命名文件时没有问题:
private String FILENAME = "myFilename";
但是当我使用一种方法来命名文件时,编译器会直接跳转到这一行:
String lineSep = System.getProperty("line.separator");
然后到我的班级声明:
public class AddUser extends Activity
并且应用程序崩溃。
这是日志文件所说的:
12-03 16:26:12.814: E/AndroidRuntime(20307): FATAL EXCEPTION: main
12-03 16:26:12.814: E/AndroidRuntime(20307): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.app/com.myapp.app.ProfileSaved}: java.lang.NullPointerException
12-03 16:26:12.814: E/AndroidRuntime(20307): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
12-03 16:26:12.814: E/AndroidRuntime(20307): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
12-03 16:26:12.814: E/AndroidRuntime(20307): at android.app.ActivityThread.access$600(ActivityThread.java:130)
这是我的文件命名方法:
int firstArray;
int nextArray;
private String fileNamer(){
File dataDirectory = Environment.getDataDirectory();
File fileDir = new File(dataDirectory, "data/com.myapp.app/files");
String[] filenameArray = fileDir.list();
Arrays.sort(filenameArray);
if (filenameArray.length == 0){
return "0";
}
if (filenameArray.length == 2500){
return "too_many_items";
}
if (!filenameArray[0].equals("0")){
return "0";
}
int arrayLength = filenameArray.length;
int i;
for(i=0; i<arrayLength-1;){
firstArray = Integer.parseInt(filenameArray[i]);
nextArray = Integer.parseInt(filenameArray[i+1]);
if (firstArray+1 == nextArray){
i++;
}
}
return Integer.toString(nextArray+1);
}
该方法似乎工作正常,但我不明白为什么它会影响程序的其余部分,因为它所做的只是返回一个字符串?