I'm doing a program that needs to create a file that stores an array to load it later, the problem is that when I create it I get the following error:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.victor.miscompaneros, PID: 13282
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.io.IOException: Read-only file system
at java.io.UnixFileSystem.createFileExclusively0(Native Method)
at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:281)
at java.io.File.createNewFile(File.java:1008)
at com.example.victor.miscompaneros.menucontactos.leerFichContactos(menucontactos.java:84)
at com.example.victor.miscompaneros.menucontactos.metodo_anadir(menucontactos.java:58)
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
I think the error comes from this line:
Caused by: java.io.IOException: Read-only file system
And this is the code
public class menucontactos extends AppCompatActivity implements Serializable {
@TargetApi(Build.VERSION_CODES.KITKAT)
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menucontactos);
}
public void metodo_volver(View view) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
finish();
}
public void metodo_editar(View view) {
Intent intent = new Intent(getApplicationContext(), editarcontacto.class);
intent.putExtra("DATO", 2);
startActivity(intent);
finish();
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public void metodo_anadir(View view) throws IOException, ClassNotFoundException {
leerFichContactos();
Intent intent = new Intent(getApplicationContext(), editarcontacto.class);
intent.putExtra("DATO", 1);
startActivity(intent);
finish();
}
public void metodo_borrar(View view) {
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
static void leerFichContactos() throws IOException, ClassNotFoundException {
if (fichContactos.exists()) {
FileInputStream fis = new FileInputStream("contactos.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
ArrayList<Contacto> contactos = (ArrayList<Contacto>) ois.readObject();
ois.close();
} else {
fichContactos.createNewFile();
}
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
static void escribirDatosContactos() throws IOException {
FileOutputStream fos = new FileOutputStream("contactos.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(contactos);
oos.close();
}
}