Skocz do zawartości
SignorHarry

Notatnik - problem z odczytem danych

    Rekomendowane odpowiedzi

    Witam!
    Piszę aplikację notatnik (dopiero zaczynam swoją przygodę z androidem). App'ka ma zapisywać tekst na karcie pamięci oraz umożliwiać jego wyświetlenie.

    Wykonałem już kod odpowiedzialny za zapisywanie w pliku .txt . Problem napotkałem przy tworzeniu listy.
    Przy zapisie używam :

    public void SaveNote(View view) throws IOException {
    et = (EditText) findViewById(R.id.editText2);
    String content = et.getText().toString();
    
    name = (EditText) findViewById(R.id.editText);
    String file_name = name.getText().toString();
    
    FileOutputStream zapis = openFileOutput(file_name + ".txt", MODE_PRIVATE);
    zapis.write(file_name.getBytes());
    zapis.close();
    
    Intent save = new Intent(this, MainActivity.class);
    startActivity(save);

    Gdy chcę stworzyć listę plików (notatek) napotykam na pustą listę. Kod jakiego używam to:

    final ListView NoteList;
    NoteList = (ListView) findViewById(R.id.listView);
    FileInputStream odczyt = null;
    try {
    odczyt = openFileInput(file_name+".txt");
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    BufferedInputStream bis = new BufferedInputStream(odczyt);
    StringBuffer sb = new StringBuffer();
    try {
    while (bis.available()!=0) {
    char c = (char) bis.read();
    sb.append(c);
    bis.close();
    odczyt.close();
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    
    ArrayList<String> ListNote;
    ListNote = new ArrayList<String>();
    ListNote.add(String.valueOf(sb));
    
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, ListNote);
    NoteList.setAdapter(adapter);
    adapter.notifyDataSetChanged();

    Niestety nie dostrzegam błędu w tym co robię :( 
    Cały czas wyświetla się jedna pusta pozycja na pustej liście.
    Z góry dziękuję za wytłumaczenie błędu :)
    Ps. Całość odbywa się w 2 różnych actvity - zapis w NewNote.class, lista (która będzie przenosić do właściwej notatki) w MainActvity.class .
     

    post-392183-0-59369100-1443121535_thumb.png

    Edytowane przez panryz
    Tagi code

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid

    1. Poczytaj o CamelCase.

    2. Nie piszemy do implementacji listy tylko do interfejsu a zatem:

    List<String> list = new ArrayList<>():

    3. Ta Twoja lista posiada tylko jeden wpis i jest to wpis zawierający zawartość pliku filename+txt.

    odczyt = openFileInput(file_name+".txt");
    ListNote = new ArrayList<String>();
    ListNote.add(String.valueOf(sb));

    a w zasadzie to powinno wyglądać tak, jeśli mówimy o zmianach które wypisałem w 1 i 2 punkcie:

    listNote = new ArrayList<>();
    listNote.add(String.valueOf(sb));

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Poprawiłem wszystko jak mówiłeś i efekt jest dalej taki sam :(
    Gdy wprowadzę tekst ręcznie ( NoteList.add("XAXA")) wszystko pojawia się właściwie/poprawnie, a gdy chcę by to samo się wpisało - pobrało dane z file_name - dostaję puste pole :(
    Wklejam cały kod, może błąd leży jeszcze niż ja zakładam.

     

    post-392183-0-15225500-1443176992_thumb.png

    post-392183-0-15870500-1443176993_thumb.png

    post-392183-0-04012500-1443176994_thumb.png

    post-392183-0-09358600-1443176995_thumb.png

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid

    Poprawiłem wszystko jak mówiłeś i efekt jest dalej taki sam

     

    Nie, nie poprawiłeś. CamelCase dalej nie jest zastosowany.

     

    Gdy wprowadzę tekst ręcznie ( NoteList.add("XAXA")) wszystko pojawia się właściwie/poprawnie, a gdy chcę by to samo się wpisało - pobrało dane z file_name - dostaję puste pole

     

     

    Jak słusznie zauważyłeś skoro add."XAXA" działa, to znaczy że String.valueOf(sb nie działa. Czyli tam nic nie ma bo np:

    nie ma takiego pliku

    nie masz do niego uprawnień

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    @@panryz nie wiem o co chodzi z CamelCase :( przepraszam, ale nie mogę znaleźć nic sensownego związanego z CC co pomogłoby mi znaleźć błąd. Możesz mi to przybliżyć?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid

    camel case nie jest błędem tylko jest to metodyka nazywania obiektów, metod i klas.

    U Ciebie błąd jest taki że Twoje "sb" nie zwraca nic przez co nie dodaje się do listy.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    @@panryz To co mam dodawać..? Wartość czego..? - Zadanie mnie chyba przerosło :( Prócz tego widzisz tam jakieś "mocno dające po oczach" błędy?

    Ps. To dobrze zacząłem szukać CamelCase, ale zafiksowałem się, że to ma być coś z Javy (jakiś błąd). 

    Edytowane przez SignorHarry

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid

    W zasadzie to masz dodawać to co chcesz. A to że nie możesz odczytać pliku to weź sobie zapuść debugger i zobacz co tam siedzi. Być może w ogóle nie wchodzi Ci do try tylko wali exceptiona

    • Lubię to! 1

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    senega

    Co robi openFileInput i openFileOutput? Gdzie jest zapisywany plik? Czy masz uprawnienia do zapisu na karcie?

     

    CamelCase -

    Nazywasz zmienne np.: NoteList a powinna się nazywać noteList - łatwiej się czyta tekst, w którym stosuje się poprawnie nazewnictwo zmiennych, klas i funkcji

    lektura na dziś :D - Nazewnictwo zmiennych

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    FileOutputStream zapis = openFileOutput(file_name + ".txt", MODE_APPEND);
    zapis.write(content.getBytes());
    zapis.close();

    FileOutputStream - tego używam do zapisywania pliku.

    FileInputStream odczyt = null;
    try {
    odczyt = openFileInput(file_name + ".txt");
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    BufferedInputStream bis = new BufferedInputStream(odczyt);
    StringBuffer sb = new StringBuffer();
    try {
    while (bis.available()!=0) {
    char c = (char) bis.read();
    sb.append(c);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }

    FileInputStream - tego używam do odczytania tego co zapisałem.
    Gdy używam tego w jednym actvity do przetestowania czy zapis działa to wszystko było ok (działało).

    Co do uprawnień do zapisu na karcie...widziałem to w jakimś poradniku i działało, więc sam postanowiłem to zastosować.
    Ps. @@senega dzięki za link i dokładne wyjaśnienie :)

     

    @@SignorHarry kod dajemy w tagi code


    To mam w Logcat:
     

    09-25 09:17:03.195    7807-7807/com.example.lukasz.nonote I/System.out﹕ debugger has settled (1301)
    09-25 09:17:03.235    7807-7807/com.example.lukasz.nonote D/dalvikvm﹕ GC_FOR_ALLOC freed 43K, 4% free 2789K/2884K, paused 0ms, total 4ms
    09-25 09:17:03.235    7807-7807/com.example.lukasz.nonote I/dalvikvm-heap﹕ Grow heap (frag case) to 3.247MB for 500412-byte allocation
    09-25 09:17:03.255    7807-7807/com.example.lukasz.nonote D/dalvikvm﹕ GC_FOR_ALLOC freed 0K, 3% free 3278K/3376K, paused 19ms, total 19ms
    09-25 09:17:03.275    7807-7807/com.example.lukasz.nonote W/System.err﹕ java.io.FileNotFoundException: /data/data/com.example.lukasz.nonote/files/null.txt: open failed: ENOENT (No such file or directory)
    09-25 09:17:03.275    7807-7807/com.example.lukasz.nonote W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:409)
    09-25 09:17:03.285    7807-7807/com.example.lukasz.nonote W/System.err﹕ at java.io.FileInputStream.<init>(FileInputStream.java:78)
    09-25 09:17:03.285    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.ContextImpl.openFileInput(ContextImpl.java:788)
    09-25 09:17:03.285    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.content.ContextWrapper.openFileInput(ContextWrapper.java:179)
    09-25 09:17:03.285    7807-7807/com.example.lukasz.nonote W/System.err﹕ at com.example.lukasz.nonote.MainActivity.onCreate(MainActivity.java:39)
    09-25 09:17:03.285    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.Activity.performCreate(Activity.java:5231)
    09-25 09:17:03.285    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    09-25 09:17:03.285    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
    09-25 09:17:03.285    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
    09-25 09:17:03.285    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.ActivityThread.access$800(ActivityThread.java:135)
    09-25 09:17:03.295    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    09-25 09:17:03.295    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102)
    09-25 09:17:03.295    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
    09-25 09:17:03.305    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5001)
    09-25 09:17:03.305    7807-7807/com.example.lukasz.nonote W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
    09-25 09:17:03.305    7807-7807/com.example.lukasz.nonote W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
    09-25 09:17:03.305    7807-7807/com.example.lukasz.nonote W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at libcore.io.Posix.open(Native Method)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:393)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ ... 18 more
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ java.io.IOException: BufferedInputStream is closed
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at java.io.BufferedInputStream.streamClosed(BufferedInputStream.java:118)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at java.io.BufferedInputStream.available(BufferedInputStream.java:112)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at com.example.lukasz.nonote.MainActivity.onCreate(MainActivity.java:46)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.Activity.performCreate(Activity.java:5231)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.ActivityThread.access$800(ActivityThread.java:135)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5001)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
    09-25 09:17:03.315    7807-7807/com.example.lukasz.nonote W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
    09-25 09:17:03.375    7807-7807/com.example.lukasz.nonote D/﹕ HostConnection::get() New Host Connection established 0xb8cc3860, tid 7807
    09-25 09:17:03.395    7807-7807/com.example.lukasz.nonote W/EGL_emulation﹕ eglSurfaceAttrib not implemented
    09-25 09:17:03.395    7807-7807/com.example.lukasz.nonote D/OpenGLRenderer﹕ Enabling debug mode 0
    09-25 09:17:03.475    1254-1268/system_process I/ActivityManager﹕ Displayed com.example.lukasz.nonote/.MainActivity: +3s694ms
    09-25 09:17:56.826    1254-1407/system_process I/ActivityManager﹕ START u0 {cmp=com.example.lukasz.nonote/.NewNote} from pid 7807
    09-25 09:17:56.836    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:17:56.836    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:17:56.836    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:17:56.836    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:17:56.836    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:17:56.836    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:17:56.836    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:17:56.836    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:17:56.836    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:17:56.836    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:17:56.836    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/KeypressStandard.ogg
    09-25 09:17:56.836    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/KeypressStandard.ogg
    09-25 09:17:56.836    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/KeypressSpacebar.ogg
    09-25 09:17:56.836    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/KeypressSpacebar.ogg
    09-25 09:17:56.836    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/KeypressDelete.ogg
    09-25 09:17:56.836    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/KeypressDelete.ogg
    09-25 09:17:56.836    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/KeypressReturn.ogg
    09-25 09:17:56.836    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/KeypressReturn.ogg
    09-25 09:17:56.836    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/KeypressInvalid.ogg
    09-25 09:17:56.836    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/KeypressInvalid.ogg
    09-25 09:17:56.836    1254-1298/system_process W/AudioService﹕ onLoadSoundEffects(), Error -1 while loading samples
    09-25 09:17:56.976    1369-2753/com.android.inputmethod.latin I/LatinIME:LogUtils﹕ Dictionary info: dictionary = contacts.en_US.dict ; version = ? ; date = ?
    09-25 09:17:56.996    7807-7807/com.example.lukasz.nonote W/EGL_emulation﹕ eglSurfaceAttrib not implemented
    09-25 09:17:57.066    1254-1268/system_process I/ActivityManager﹕ Displayed com.example.lukasz.nonote/.NewNote: +206ms
    09-25 09:18:08.716    1254-1407/system_process W/ActivityManager﹕ Duplicate finish request for ActivityRecord{b31147b8 u0 com.example.lukasz.nonote/.NewNote t4 f}
    09-25 09:18:08.726    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:18:08.726    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:18:08.726    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:18:08.726    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:18:08.726    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:18:08.726    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:18:08.726    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:18:08.726    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:18:08.726    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:18:08.726    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg
    09-25 09:18:08.726    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/KeypressStandard.ogg
    09-25 09:18:08.726    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/KeypressStandard.ogg
    09-25 09:18:08.726    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/KeypressSpacebar.ogg
    09-25 09:18:08.726    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/KeypressSpacebar.ogg
    09-25 09:18:08.726    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/KeypressDelete.ogg
    09-25 09:18:08.726    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/KeypressDelete.ogg
    09-25 09:18:08.726    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/KeypressReturn.ogg
    09-25 09:18:08.726    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/KeypressReturn.ogg
    09-25 09:18:08.726    1254-1298/system_process E/SoundPool﹕ error loading /system/media/audio/ui/KeypressInvalid.ogg
    09-25 09:18:08.726    1254-1298/system_process W/AudioService﹕ Soundpool could not load file: /system/media/audio/ui/KeypressInvalid.ogg
    09-25 09:18:08.726    1254-1298/system_process W/AudioService﹕ onLoadSoundEffects(), Error -1 while loading samples
    09-25 09:18:08.776    7807-7807/com.example.lukasz.nonote W/EGL_emulation﹕ eglSurfaceAttrib not implemented
    
    
    Edytowane przez panryz
    tagi code

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x