SharedPreferences funktioniert nicht, wo liegt der Fehler?

  • Moin zusammen,


    ich habe zwei Android-Beispiele im Netz gefunden welche ich gerne zu einer Application zusammenführen möchte (nichts wildes und nur für mich zum übern) jedoch funktioniert ein Teil nicht und leider finde ich den Fehler nicht


    Kurz was das Programm machen soll:
    Der User kann per Button klick einen Kontakt aus seiner Kontaktliste picken der in meiner Activity übernommen wird, dieses funktioniert bislang bis auf die Telefonnummer + eMail-Adresse ganz gut jedoch sollen die Daten (der Name) anschliessend über einen anderen Button in der SharedPreferences gespeichert werden. Leider funktioniert das speichern des gepickten Namen nicht und ich kann nirgends den Fehler finden. LogCat spuckt auch keine Meldung aus!


    Ich befürchte ich habe irgendwo einen Fehler gemacht kann aber nicht sagen wo. Ich habe den Code für die SharedPreferences aus einer Beispiel-App wo Er einwandfrei funktioniert.


    Ich würde mich freuen, wenn Ihr Euch das mal anschauen könnt und mir evtl. sagt wo der Fehler liegt oder Tipps gibt!
    Die Beispieldatei könnt Ihr hier downloaden:


    http://www.uploadarea.de/uploa…zl51mbjdgcq6vabu8czr.html



    Gruß Katsche

  • Hast du mal geprüft ob es ein Context Problem sein könnte


    -> statt


    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);



    mal



    SharedPreferences sp = PreferenceManager
    .getDefaultSharedPreferences(this.getApplicationContext());


    oder


    SharedPreferences sp = PreferenceManager
    .getDefaultSharedPreferences(getBaseContext());

  • Hallo Katsche,

    Zitat

    Ich würde mich freuen, wenn Ihr Euch das mal anschauen könnt und mir evtl. sagt wo der Fehler liegt oder Tipps gibt!

    ehe ich es mit einem Tipp versuchen kann, möchte ich dir sagen, dass ich zuerst ziemlich deshalb durcheinander kam, weil du in MainActivity und in Contact die gleiche Layaoutdatei (main.xml) verwendest.


    Was ich dann auch nicht ganz verstanden habe ist, dass in der AndroidManifest.xml


    Code
    <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>


    steht, also die MainActivity aufgerufen wird, du jedoch nur in Contact.java

    Code
    startActivityForResult(intent, PICK_CONTACT);	
    onActivityResult


    vorhanden sind.


    Ich hatte bisher immer gedacht, dass die zuvor genannten in der aufrufenden Activity (MainActivity) stehen sollten.
    Der Save.Button ist nur in MainActivity bearbeitet, aber was soll er speichern???


    Kannst du mir sagen, warum die in Contact.java stehnen?
    Was habe ich bislang nicht verstanden bei deiner Konstruktion?


    Fragende Grüße,
    schymura :-X

  • Hallo zusammen,


    killphil75: hat leider nichts gebracht


    @ schymura:
    Also Konstruktion ist glaube ich der richtige Begriff was ich versuche, nunja bin ein Anfänger und noch am probieren und testen wie, wann, was und wo zusammengesteckt werden muss.

    Warum darf oder sollte ich nicht die MainActivity und Contact in der gleichen Layoutdatei (main.xml) verwenden, was ist daran nicht okay? Mein Ziel war es zwei verschiedene und funktionierende Beispiele zu einer zusammen zu bauen.


    Es scheint nur ein Problem mit den Speicherbutton zu gegeben sehe jedoch anhand Deiner Antwort immer noch nicht wo es klemmt.
    Muss denn der Savebutton auch in der Contact.java verarbeitet werden?
    Gruß,
    Katsche

  • Hmmm damit LogCat Meldungen ausspuckt muss man auch Log Ausgaben in seinen Source einbauen. (ok wenn das Programm abstürzt dann gibt es auch Ausgaben)


    -> Ein Tipp - um zu prüfen ob bestimmte Programmteile überhaupt abgearbeitet werden immer mal was ins Log schreiben
    -> als erstes prüf ob dein "OnClickListener" aufgerufen wird


    Code
    @Override
    	public void onClick(View v) {
    		// TODO Auto-generated method stub
    		savePreferences("CHECKBOX", checkBox.isChecked());
    		if (checkBox.isChecked())
    			savePreferences("NAME", editText.getText().toString());
    
    
    		finish();
    	}


    das ist in so fern problematisch, da du nicht prüfst welcher Button gedrückt wurde, d.h. jeder onclick führt eigentlich zum Save-vorgang.


  • Hallo Katsche,
    das Widerverwenden des gleichen Layouts ist nicht schädlich, wenn man sich dadruch nicht durcheinander bringen lässt.


    Was ich bei deiner Konstruktion nicht verstanden habe ist
    1: Beim Start der App wird MainActivity gestartet. Der Schalter savebutton funktioniert jedoch nicht, denn würde er es tun, würde die App beendet werden.
    2: In der nicht gestarteten Activity Contatc schreibst du zwar die Daten aus, hast hier auch einige setOnClickListener(new OnClickListener() eingebaut und , aber was das so alles soll kann ich nicht verstehen.


    Schau dir bitte an, was du in der AndroidManifest.xml genau startet.


    Schöne Grüße,
    schymura ^^

  • Hallo,


    ja, es scheint an dem Manifest zu liegen. Wenn ich den Code umstelle dann werden die Daten zwar in der SharedPreferences gespeichert, so wie gewünscht, jedoch funktioniert dann der Button zum auslesen der Kontakte nicht mehr.


    Ich komme mit diesem Problem das erste mal in Berührung daher frage ich mal ganz neugierig wie ich das lösen kann?
    Kann ich das irgendwie in dem Manifest gerade ziehen oder im Contact.java bzw. MainActivity.java ?

  • Nabend,


    so, ich habe etwas gebastelt und umgestellt und zumindest funzt es bei mir soweit das ich einen Kontakt (bislang nur Name) picken kann per Buttonklick. Das speichern des Namen klappt auch! Im Telefonfeld kann man händisch eine Nummer eingeben die dann per Buttonklick entsprechend übernommen wird.


    Ich bin zwar von meinen eigentlichen Ziel, eine komplette Adresse (Name, Telefonnummer, Mobilnummer und Adresse auslesen) noch etwas entfernt jedoch erste Schritte sind gemacht. Nicht ganz perfekt aber evtl. interessant für andere Bastler... hier zum Download meiner Version: http://www.uploadarea.de/uploa…hqvod6f92zfkpc9iktrp.html


    Gruß Katsche

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!