Problem mit getSharedPreferences()

  • 8 Antworten
  • Letztes Antwortdatum
D

Dave-HD

Neues Mitglied
0
Hallo Community,

ich bin recht neu in der Android- bzw. Java-Programmierung und somit auch in diesem Forum, ich hoffe ihr könnt mir weiterhelfen.
Ich versuche mittels der SharedPreferences Daten für eine E-Mail-Sendung auszulesen,
jedoch meckert Eclipse(mit ADT) mir das getSharedPreferences an!
Zu SharedPreferences ist auch ein import in der Klasse enthalten.

Code:
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.View;
import android.widget.EditText;

public class Mail extends javax.mail.Authenticator{ 
private String _user; 
private String _pass; 

private String[] _to; 
private String _from; 

private String _port; 
private String _sport; 

private String _host; 

private String _subject; 
private String _body; 

private boolean _auth; 

private boolean _debuggable; 

private Multipart _multipart; 

View v;[COLOR=Red][U]
//hier wird der fehler angezeigt (als Hinweis kommt 'Create method' )[/U][/COLOR]
[B]SharedPreferences smtp_daten = getSharedPreferences("EMail-Daten", Activity.MODE_PRIVATE);[/B]


EditText txtSmtp = (EditText)v.findViewById(R.id.txt_SMTP_Email);
EditText txtSmtp_port = (EditText)v.findViewById(R.id.txt_SMTP_Port_Email);
EditText txtZieladresse = (EditText)v.findViewById(R.id.txt_Zieladresse_Email);

String smtp=smtp_daten.getString("SMTP", txtSmtp_port.getHint().toString());
String smtp_port =smtp_daten.getString("SMTP_Port",txtSmtp_port.getHint().toString());
String ziel = smtp_daten.getString("Zieladresse", txtZieladresse.getHint().toString());
Ich hoffe ihr könnt was damit anfangen, vielen Dank schonmal im vorraus!!!

Dave-HD
 
Hi,

Storage Options | Android Developers <- das kennst du?

Keine Ahnung ob, allerdings glaube ich, dass man das nicht als Klassenvariable deklarieren kann. Denn getShredPreferences kommt vom Context...

Gruß
 
Danke für deinen Hinweis!
Ich glaube das Problem ist, dass die Klasse keine Activitys unterstützt(extends activity).
Sollte das richtig sein, sollte es doch funktionieren wenn ich auf die Klasse zugreife auf der ich die Daten in Speicher schreibe, oder?
 
Ah stimmt, habe ich nicht gesehen. Genau, daran liegt es ;)

Sollte das richtig sein, sollte es doch funktionieren wenn ich auf die Klasse zugreife auf der ich die Daten in Speicher schreibe, oder?
Verstehe ich zwar nicht, aber die Lösung ist relativ simple:
Du musst dir einfach den Context der Activity an diese klasse im konstruktor - bsp - übergeben.

Gruß
 
Andere Zwischenfrage:

View v;

EditText txtSmtp = (EditText)v.findViewById(R.id.txt_SMTP_Email);

Das funktioniert so?
ohne NullPointerException?
v wird ja niemals initialisiert o_O
Glaube ich nicht ^^
 
Das weiß ich noch nicht konnte bis jetzt noch nicht testen! Aber in Klassen mit extends activity läuft das so! :rolleyes:
 
Das dürfte in keiner Klasse der Welt laufen :D

Was soll v denn für ein Objekt sein?
Das ist in dem Beispiel oben einfach "nichts" nicht mal null wenn man's genau nimmt.
 
Danke für die schnellen Antworten, aber iwie stehe auf dem Schlauch wie ich den context übergeben kann, vielleicht kann mir da nochmal jemand auf die Sprünge helfen!
 
StefMa schrieb:
Du musst dir einfach den Context der Activity an diese klasse im konstruktor - bsp - übergeben.

Da stehts doch ;) Deine Klasse, die auf die SharedPrefs zugreifen möchte, musst du ja irgendwo instanziieren. Vermutlich (?) aus einer Klasse die Activity/FragmentActivity/... erweitert. Also hast du in dieser auch Zugriff auf den Context. Und das gibst du nun beim Instanziieren deiner "Ich-brauch-Zugriff-auf-SharedPrefs"-Klasse mit :)


" EmailKlasse emailKlasse = new EmailKlasse(this); "
 
Zurück
Oben Unten