Moin,
habe aktuell Probleme damit, den verschiedenen Spinnern in meiner App die Adapter zuzuteilen und diese dann in den Shared Preferences zu speichern.
Bei der Zuteilung der ArrayAdapter habe ich immer die von Android Studio vorgeschlagenen genutzt, also set Adapter, adapter1, adapter2, etc.
Beim Versuch, die eingegebenen Daten der Spinner nun zu speichern, wird lediglich einer beim holen der Daten über die Retrieve Methode wiederhergestellt, und nicht wie gewünscht alle.
Ich glaube ich habe auch schon viele Varianten probiert, aber nichts half. Ebenso war es im Netz schwierig, etwas Vergleichbares zu finden...
Nachtrag: Habe mal in der Shared Preferences Datei nachgesehen: Fülle ich nur die Spinner mit Werten (Alter, Geschlecht, Dauer), so spuckt die Datei lediglich Männlich Männlich Männlich aus. Also muss ja irgendwas mit den Arrays und Adapte-Zuteilung nicht hinhauen...
Hier ist mal der Code:
package uni_hannover.sportapp;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class Cycling_Create extends Activity implements AdapterView.OnItemSelectedListener {
//Declare Class Variables//
private String NDA;
private String Startpunkt;
private String Alter;
private String Geschlecht;
private String Dauer;
private String Geschwindigkeit;
private String Streckenprofil;
private String Distanz;
public static final String STORAGE_NAME="MySharedPreferences";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cycling__create);
NDA = "";
Startpunkt = "";
Alter = "";
Geschlecht = "";
Dauer = "";
Geschwindigkeit = "";
Streckenprofil = "";
Distanz = "";
Spinner spinner_alter = (Spinner) findViewById(R.id.spinner_alter);
spinner_alter.setOnItemSelectedListener(this);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.Alter, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner_alter.setAdapter(adapter);
Spinner spinner_geschlecht = (Spinner) findViewById(R.id.spinner_geschlecht);
spinner_geschlecht.setOnItemSelectedListener(this);
ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(this,
R.array.Geschlecht, android.R.layout.simple_spinner_item);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner_geschlecht.setAdapter(adapter1);
Spinner spinner_dauer = (Spinner) findViewById(R.id.spinner_dauer);
spinner_dauer.setOnItemSelectedListener(this);
ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this,
R.array.Dauer, android.R.layout.simple_spinner_item);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner_dauer.setAdapter(adapter2);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Alter = parent.getItemAtPosition(position).toString();
Geschlecht = parent.getItemAtPosition(position).toString();
Dauer = parent.getItemAtPosition(position).toString();
}
public void onNothingSelected(AdapterView<?> parent) {
}
public void save(View view) {
NDA = ((EditText)findViewById(R.id.editNDA)).getText().toString();
Startpunkt = ((EditText)findViewById(R.id.editText2)).getText().toString();
SharedPreferences sharedPreferences = getSharedPreferences(STORAGE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("NDA",NDA );
editor.putString("Startpunkt",Startpunkt);
editor.putString("Alter", Alter);
editor.putString("Geschlecht", Geschlecht);
editor.putString("Dauer",Dauer);
editor.apply();
Toast.makeText(getApplicationContext(), "Activity has been saved!", Toast.LENGTH_LONG).show();
}
public void retrieve(View view) {
SharedPreferences sharedPreferences=getSharedPreferences(STORAGE_NAME, Context.MODE_PRIVATE);
NDA = sharedPreferences.getString("NDA", "");
Startpunkt = sharedPreferences.getString("Startpunkt","");
Alter = sharedPreferences.getString("Alter", "");
Geschlecht = sharedPreferences.getString("Geschlecht","");
Dauer = sharedPreferences.getString("Dauer","");
setUI();
}
protected void setUI(){
((TextView)findViewById(R.id.editNDA)).setText(NDA);
((TextView)findViewById(R.id.editText2)).setText(Startpunkt);
Resources resource = getResources();
String[] AlterArray = resource.getStringArray(R.array.Alter);
for(int i = 0; i < AlterArray.length; i++){
if(AlterArray[i].equals(Alter)){
((Spinner)findViewById(R.id.spinner_alter)).setSelection(i);
}
}
String[] GeschlechtArray = resource.getStringArray(R.array.Geschlecht);
for (int i = 0; i< GeschlechtArray.length; i++){
if(GeschlechtArray[i].equals(Geschlecht)){
((Spinner)findViewById(R.id.spinner_geschlecht)).setSelection(i);
}
}
String[] DauerArray = resource.getStringArray(R.array.Dauer);
for (int i=0; i< DauerArray.length; i++){
if(DauerArray[i].equals(Dauer)){
((Spinner)findViewById(R.id.spinner_dauer)).setSelection(i);
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_cycling__create, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Alles anzeigen