Salve a tutti, ho da pochissimo cominciato a programmare in android e purtroppo non essendo un grandissimo esperto di Java ho riscontrato alcuni problemi, mi ero messo in testa di fare un'app che memorizzi i dati su di un file JSon, così ho deciso di procedere per passi e uno di questi era creare un semplice blocco note con 2 aree una in cui inserire il testo l'altra in cui inserire il nome del file più 2 bottoni(carica, salva).
Questo è il codice:
1
2package com.example.blocconote;
3
4import android.os.Bundle;
5import android.app.Activity;
6import android.view.Menu;
7import android.view.View;
8import android.widget.EditText;
9import android.widget.Button;
10import java.io.Writer;
11import java.io.Reader;
12import java.io.InputStreamReader;
13import java.io.OutputStreamWriter;
14
15public class MainActivity extends Activity {
16
17EditText nome_f, testo_f;
18Button carica, salva;
19
20
21protected void onCreate(Bundle savedInstanceState) {
22
23
24super.onCreate(savedInstanceState);
25
26setContentView(R.layout.activity_main);
27
28Button carica = (Button) findViewById(R.id.carica_file);
29
30carica.setOnClickListener(new View.OnClickListener() {
31EditText nome_f = (EditText) findViewById(R.id.nome_file);
32
33public void onClick(View v) {
34if(nome_f.toString().length()!=0){
35carica_file(nome_f.toString());
36}
37}
38});
39
40Button salva = (Button) findViewById(R.id.salva_file);
41
42salva.setOnClickListener(new View.OnClickListener() {
43EditText nome_f = (EditText) findViewById(R.id.nome_file);
44EditText testo_f = (EditText) findViewById(R.id.testo_file);
45
46public void onClick(View v) {
47if(nome_f.toString().length()!=0){
48salva_file(nome_f.toString(), testo_f.toString());
49}
50}
51});
52}
53
54private void salva_file(String nome_file, String testo_file){
55Writer scrittore = null;
56try{
57scrittore = new OutputStreamWriter(openFileOutput(nome_file, MODE_PRIVATE));
58//scrittore = new OutputStreamWriter(openFileOutput("prova.txt", MODE_PRIVATE));
59scrittore.write(testo_file);
60}catch(Exception e){
61//TODO:Implementare messaggio per eccezione
62}finally{
63try{
64scrittore.close();
65}catch(Exception e){
66//TODO:Implementare messaggio per eccezione
67}
68}
69}
70
71private String carica_file(String nome_file){
72String testo="";
73Reader lettore=null;
74try{
75lettore = new InputStreamReader(openFileInput(nome_file));
76//TODO:Capire come funziona di preciso la lettura
77StringBuffer aux = new StringBuffer();
78char[] buf = new char[1024];
79int len;
80while ((len = lettore.read(buf)) != -1) {
81aux.append(buf, 0, len);
82}
83testo = aux.toString();
84}catch(Exception e){
85//TODO:Implementare messaggio per eccezione
86}finally{
87try{
88lettore.close();
89}catch(Exception e){
90//TODO:Implementare messaggio per eccezione
91}
92
93}
94
95return testo;
96}
97
98
99public boolean onCreateOptionsMenu(Menu menu) {
100// Inflate the menu; this adds items to the action bar if it is present.
101getMenuInflater().inflate(R.menu.main, menu);
102return true;
103}
104
105}
106
411
2<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3xmlns:tools="http://schemas.android.com/tools"
4android:layout_width="match_parent"
5android:layout_height="match_parent"
6android:paddingBottom="@dimen/activity_vertical_margin"
7android:paddingLeft="@dimen/activity_horizontal_margin"
8android:paddingRight="@dimen/activity_horizontal_margin"
9android:paddingTop="@dimen/activity_vertical_margin"
10tools:context=".MainActivity" >
11
12<TextView
13android:id="@+id/nome_file"
14android:layout_width="wrap_content"
15android:layout_height="wrap_content" />
16
17<TextView
18android:id="@+id/testo_file"
19android:layout_width="wrap_content"
20android:layout_height="wrap_content"
21android:layout_alignParentRight="true"
22android:layout_below="@+id/nome_file" />
23
24<Button
25android:id="@+id/carica_file"
26android:layout_width="wrap_content"
27android:layout_height="wrap_content"
28android:layout_alignParentBottom="true"
29android:layout_alignParentRight="true"
30android:text="@string/caricamento" />
31
32<Button
33android:id="@+id/salva_file"
34android:layout_width="wrap_content"
35android:layout_height="wrap_content"
36android:layout_alignParentBottom="true"
37android:layout_alignParentLeft="true"
38android:text="@string/salvataggio" />
39
40</RelativeLayout>
41
come potete vedere oltre la mancanza di log per gli errori che dovrei aver capito come inserire, c'è un: "//TODO:Capire come funziona di preciso la lettura", questo perché ho copiato quella parte di codice da un'esempio non conoscendo ancora bene gli streaming di Java(credo che scrivere su file sia una delle cose che mi è capitata di fare più di rado).
C'è anche la riga 57 commentata che apre un file con un nome specifico e non passato dai parametri del metodo, l'ho inserita dopo qualche tentativo di creare un codice eseguibile lasciando meno codice possibile e decommentando nuove parti fino al presentarsi di errori, ed effettivamente passare al metodo openFileOutput una stringa anzi che un parametro sembrava giovargli.
Il problema è che quando lancio l'applicazione si chiude dasola e mi da una marea di errori che al momento non riesco neanche a riportarvi perché a quanto pare eclipse ha deciso di salvarmi i log in file vuoti.
Non riesco a inserire l'xml per una restrizione sui link![]()
Spero di non aver dimenticato nulla e di essermi spiegato abbastanza chiaramente, in ogni caso vi ringrazio in anticipo per l'aiuto.