Daten speichern und von anderen Activities darauf zugreifen

  • Antworten:8
Roman
  • Forum-Beiträge: 10

12.11.2014, 17:05:29 via Website

Hallo Leute,

ich bin neu in diesem Forum und auch Neuling in der App Entwicklung.

Ich habe eine Frage und zwar wie man es realisieren kann, dass man Daten in einer Activity speichert und von einer anderen Activity ausließt ohne sie zu übergeben? SharedPreferences funktioniert bei mir nur soweit, dass ich Daten speichern kann aber auch nur in der selben Acticity auslesen kann.

Ich hoffe ihr könnt mir helfen. :)

— geändert am 12.11.2014, 17:19:15

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

12.11.2014, 17:08:58 via Website

Hallo Roman,

Herzlich willkommen bei uns im Forum :)
Bitte beachte, dass Threads mit nicht aussagekräftigem Titel bei uns üblicherweise den Regeln entsprechend entfernt werden. Ich bitte dich daher, deinen Threadtitel bei deinem nächsten Besuch, spätestens jedoch innerhalb der nächsten 24 Stunden noch etwas aussagekräftiger zu gestalten (Hierfür einfach unter deinem ersten Beitrag auf 'bearbeiten' klicken, dann kannst du oben noch mal den Titel anpassen)
Danke :)



Wie sieht denn dein SharedPreferences Code aus?
Variablen etc. kannst du auch über einen Intent transferieren, damit die Daten dann auch in einer anderen Activity sind.
Tut: http://www.vogella.com/tutorials/AndroidIntent/article.html
LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Roman
  • Forum-Beiträge: 10

12.11.2014, 17:22:02 via Website

Vielleicht beschreibe ich mein Problem deutlicher, damit Ihr mir präziser helfen könnt :)

Wenn ich einen String in Activity a speicher und zur Activity b wechsle, gibt es eine Möglichkeit auf den String in Activity a zuzugreifen ohne ihn mit Hilfe des Intens zu übergeben?

Lieben Gruß

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

12.11.2014, 17:40:09 via Website

Also am Besten man macht es mit Intents, das ist am komfortabelsten.
Du kannst es natürlich auch über eine globale Variable (nicht empfehlenswert)
und/oder SharedPrefeerences machen
Für SharedPrefererences: http://android4yourfuture.blogspot.de/2012/10/android-shared-preferences-tutorial.html

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Roman
  • Forum-Beiträge: 10

12.11.2014, 18:05:36 via Website

Bei mir funktioniert es noch nicht, so sieht mein Code aus:

MainActivity:

public static final String MY_Pref = "MYPREFF";
SharedPreferences sp = getSharedPreferences(MY_Pref, 0);
SharedPreferences.Editor ed = sp.edit();
ed.putString("name", text.getText().toString());
ed.commit();

SecondActivity:

SharedPreferences s = getSharedPreferences(MainActivity.MY_Pref, 0);
String name = s.getString("name", "error");
Log.v("Name", name);

(Ich habe jetzt Sachen weggelassen wie zb der Activity Wechsel)

Wisst ihr woran dass liegt, dass ich von der SecondActivity nicht auf die Daten zugreifen kann?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

12.11.2014, 18:07:45 via Website

Das wird wohl daran liegen dass die Daten nicht geschrieben werden.
Zeig mal mehr von deinem Code.
Bitte nix weglassen, es könnte auch was anderes der Fehler sein ;)

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Roman
  • Forum-Beiträge: 10

12.11.2014, 18:13:04 via Website

MainActivity:

public static final String MY_Pref = "MYPREFF";
private Button btn;
private EditText text;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn = (Button)findViewById(R.id.button1);
    text = (EditText)findViewById(R.id.editText1);
    btn.setOnClickListener(this);

    SharedPreferences sp = getSharedPreferences(MY_Pref, 0);
    SharedPreferences.Editor ed = sp.edit();
    ed.putString("name", text.getText().toString());
    ed.commit();
}

@Override
public void onClick(View arg0) {
    Intent in = new Intent(getApplicationContext(), SecondActivity.class);
    startActivity(in);
    MainActivity.this.finish();
}

SecondActivity:

private TextView text;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    text = (TextView)findViewById(R.id.textView1);

    SharedPreferences s = getSharedPreferences(MainActivity.MY_Pref, 0);
    String name = s.getString("name", "error");

    Log.v("Name", name);
}

Antworten
pepperonas
  • Forum-Beiträge: 434

14.11.2014, 14:53:00 via Website

Probiere es mal so rum...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn = (Button)findViewById(R.id.button1);
    text = (EditText)findViewById(R.id.editText1);
    btn.setOnClickListener(this);


}

@Override
public void onClick(View arg0) {

    SharedPreferences sp = getSharedPreferences(MY_Pref, 0);
    SharedPreferences.Editor ed = sp.edit();
    ed.putString("name", text.getText().toString());
    ed.commit();

    Intent in = new Intent(getApplicationContext(), SecondActivity.class);
    startActivity(in);
    MainActivity.this.finish();
}

Zum Zeitpunkt der onCreate ist dein Text aller Wahrscheinlichkeit noch leer.
Die SharedPrefs werden im Verzeichnis angelegt sein, oder?

Ich glaube sogar das toString ist redundant (sicher bin ich mir nicht)...

— geändert am 14.11.2014, 14:54:52

Open Source

Antworten
Roman
  • Forum-Beiträge: 10

18.11.2014, 22:18:38 via Website

Ja das war der Fehler, danke vielmals! :)

Antworten