Button List in SharedPreferences speichern?

  • Antworten:9
  • Bentwortet
Gelöschter Account
  • Forum-Beiträge: 2.492

28.05.2013, 18:23:18 via Website

Hallo,
ich versuche den isEnabled() Status von Buttons in einer ArrayList (myButtons) in die SharedPreferences zu speichern, kriege es aber nicht wirklich hin.

Wenn der "save" Button gedrückt wird soll der isEnabled() Status also ein boolean in den SharedPreferences gespeichert werden ich habe das bisher so versucht:
1public void saveDatas(View v) {
2 // TODO Auto-generated method stub
3 settings = getSharedPreferences(FILE_NAME, 0);
4 SharedPreferences.Editor editor = settings.edit();
5 for(int i = 0; i<myButtons.size(); i++){
6 boolean state = myButtons.get(i).isEnabled();
7 state = settings.getBoolean(""+i, false);
8
9 editor.putBoolean(""+i, true);
10 editor.commit();
11 }
12 }

Wenn der "load" Button gedrückt wird sollen dann alle Buttons auf den gespeicherten Boolean Wert gesetzt werden, was ich damit versucht habe:
1private void loadDatas(View v) {
2 // TODO Auto-generated method stub
3 for(int i = 0; i<myButtons.size(); i++){
4 settings = getSharedPreferences(""+i, 0);
5 boolean status = settings.getBoolean(""+i, false);
6 myButtons.get(i).setEnabled(status);
7 }
8 }

Würde mich freuen wenn jemand eine Idee hätte ich komm einfach nicht weiter :(

— geändert am 28.05.2013, 18:23:33

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

28.05.2013, 19:13:58 via Website

Weil mich das beim Lesen direkt angesprungen hat: müssen edit()/commit() nicht paarig sein?
Würde bedeuten, das du dein commit() hinter die Schleife verschiebst.

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

28.05.2013, 19:26:39 via Website

Cool danke das hilft schonmal ein bisschen. Wenn ich save und dann was änder und load drücke springt der auf den "gesavten" Status zurück, wenn ich aber die App beende oder ins Menü zurück gehe, wieder starte und dann load drücke wird die App beendet :(

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

28.05.2013, 20:06:17 via Website

wird die App beendet

Bei solchen Fragen immer ins Logcat schauen, und wenn du den Inhalt nicht verstehst, dann Logcat hier posten.

Sollte klar sein das dir mit "wurde beendet" keiner helfen kann, oder?

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

28.05.2013, 20:14:19 via Website

Ich verstehe leider die Fehler in der LogCat nicht habe mich da noch nicht mit beschäftigt aber ich hoffe du kannst mir damit helfen:

05-28 20:11:00.519: D/AndroidRuntime(14974): Shutting down VM
05-28 20:11:00.519: W/dalvikvm(14974): threadid=1: thread exiting with uncaught exception (group=0x40a9b228)
05-28 20:11:00.539: E/AndroidRuntime(14974): FATAL EXCEPTION: main
05-28 20:11:00.539: E/AndroidRuntime(14974): java.lang.NullPointerException
05-28 20:11:00.539: E/AndroidRuntime(14974): at com.lars.Play.loadDatas(Play.java:359)
05-28 20:11:00.539: E/AndroidRuntime(14974): at com.lars.Play.onLongClick(Play.java:349)
05-28 20:11:00.539: E/AndroidRuntime(14974): at android.view.View.performLongClick(View.java:3574)
05-28 20:11:00.539: E/AndroidRuntime(14974): at android.widget.TextView.performLongClick(TextView.java:9998)
05-28 20:11:00.539: E/AndroidRuntime(14974): at android.view.View$CheckForLongPress.run(View.java:14308)
05-28 20:11:00.539: E/AndroidRuntime(14974): at android.os.Handler.handleCallback(Handler.java:608)
05-28 20:11:00.539: E/AndroidRuntime(14974): at android.os.Handler.dispatchMessage(Handler.java:92)
05-28 20:11:00.539: E/AndroidRuntime(14974): at android.os.Looper.loop(Looper.java:156)
05-28 20:11:00.539: E/AndroidRuntime(14974): at android.app.ActivityThread.main(ActivityThread.java:4977)
05-28 20:11:00.539: E/AndroidRuntime(14974): at java.lang.reflect.Method.invokeNative(Native Method)
05-28 20:11:00.539: E/AndroidRuntime(14974): at java.lang.reflect.Method.invoke(Method.java:511)
05-28 20:11:00.539: E/AndroidRuntime(14974): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-28 20:11:00.539: E/AndroidRuntime(14974): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-28 20:11:00.539: E/AndroidRuntime(14974): at dalvik.system.NativeStart.main(Native Method)

Reicht das? Das waren zumindest die Errors die angezeigt wurden.

— geändert am 28.05.2013, 20:15:30

Antworten
impjor
  • Forum-Beiträge: 1.793

28.05.2013, 20:35:12 via App

Wir lesen
NullPointerExeption ... in Play.java ... [Zeile] 359

Die mal genau ansehen.

Gruß

— geändert am 28.05.2013, 20:35:32

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

28.05.2013, 20:43:41 via Website

Danke für die Hilfe :)

Das ist in der loadData Methode:

1private void loadDatas(View v) {
2 // TODO Auto-generated method stub
3 for (int i = 0; i < myButtons.size(); i++) {
4 // settings = getSharedPreferences(""+i, 0);
5 boolean status = settings.getBoolean("" + i, true); //Zeile 359
6 myButtons.get(i).setEnabled(status);
7 }
8 }

Ist das Problem vielleicht der Key das man den so nicht eingeben kann/darf?

— geändert am 28.05.2013, 20:45:21

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

28.05.2013, 21:43:52 via Website

Ist das Problem vielleicht der Key das man den so nicht eingeben kann/darf?

Sieht das aus als ob ein Nullpointer dabei herauskommen könnte?
Eben :)

Deiner Markierung nach wird "settings" nicht initialisiert sein.

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

29.05.2013, 09:01:52 via Website

Ja danke Leute hat geklappt ich musste die // aber nicht nur wegmachen sondern natürlich auch den Name der SharedPreferences angeben und nicht ""+i :P

Antworten