SharedPreferences für double Werte

P

Paarn

Neues Mitglied
0
Ich habe 2 Activities, die double Werte an die MainActivity übergeben sollen. Jedoch klappt es nur bei einer der beiden. Ich habe erst gedacht es liegt daran, dass die Main ein Fragment ist, da ich einen Navigation Drawer nutze. Aber dann dürfte es ja bei beiden nicht klappen.

Hier mal Beispielcode:
Activity1
Code:
protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);

        TextView name = (TextView) findViewById(R.id.text_activity);
        name.setText(R.string.text_activity);
        
        RadioButton 1= (RadioButton) findViewById(R.id.1);
        not.setText(R.string.1);
        RadioButton 2= (RadioButton) findViewById(R.id.2);
        little.setText(R.string.2);
        RadioButton 3= (RadioButton) findViewById(R.id.3);
        active.setText(R.string.3);
        RadioButton 4= (RadioButton) findViewById(R.id.4);
        very.setText(R.string.4);
        
        settings = getSharedPreferences(PREFS_NAME, 0);
        editor = settings.edit();
        
        radioSport = (RadioGroup) findViewById(R.id.radiogroupactivity);
        radioSport.setOnCheckedChangeListener(new OnCheckedChangeListener()
        {
            
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId)
            {
                // TODO Auto-generated method stub
                switch (checkedId)
                {
                case R.id.1:
                {
                    editor.putFloat("neuertest", (float) 1.4);
                    break;
                }
                case R.id.2:
                {
                    editor.putFloat("neuertest", (float) 1.6);
                    break;
                }
                case R.id.3:
                {
                    editor.putFloat("neuertest", (float) 1.8);
                    break;
                }
                case R.id.4:
                {
                    editor.putFloat("neuertest", (float) 2.0);
                    break;
                }
                }
                editor.putInt("speichereActivity1", checkedId);
            }
        });

Activity2
Code:
protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);

        TextView name = (TextView) findViewById(R.id.text_activity);
        name.setText(R.string.text_activity);
        
        RadioButton 1= (RadioButton) findViewById(R.id.1);
        not.setText(R.string.1);
        RadioButton 2= (RadioButton) findViewById(R.id.2);
        little.setText(R.string.2);
        RadioButton 3= (RadioButton) findViewById(R.id.3);
        active.setText(R.string.3);
        RadioButton 4= (RadioButton) findViewById(R.id.4);
        very.setText(R.string.4);
        RadioButton 5= (RadioButton) findViewById(R.id.5);
        extreme.setVisibility(View.VISIBLE);
        extreme.setText(R.string.5);
        
        settings = getSharedPreferences(PREFS_NAME, 0);
        editor = settings.edit();
        
        radioWork = (RadioGroup) findViewById(R.id.radiogroupactivity);
        radioWork.setOnCheckedChangeListener(new OnCheckedChangeListener()
        {
            
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId)
            {
                // TODO Auto-generated method stub
                switch (checkedId)
                {
                case R.id.1:
                {
                    editor.putFloat("test", (float) 1.4);
                    break;
                }
                case R.id.2:
                {
                    editor.putFloat("test", (float) 1.6);
                    break;
                }
                case R.id.3:
                {
                    editor.putFloat("test", (float) 1.8);
                    break;
                }
                case R.id.4:
                {
                    editor.putFloat("test", (float) 2.0);
                    break;
                }
                case R.id.5:
                {
                    editor.putFloat("test", (float) 2.2);
                    break;
                }
                }
                editor.putInt("speichereActivity2", checkedId);
            }
        });

Main
Code:
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        
        settings = getSharedPreferences(PREFS_NAME, 0);
        double wert_activity1= settings.getFloat("test", 0);
        double wert_activity2= settings.getFloat("neuertest", 0);

Bei Activity 2 wird der richtige Wert übergeben, bei Activity1 wird nur der Default Wert ausgegeben.
Das ist jetzt etwas aus dem Kontext gerissen, aber ich hoffe ihr könnt was damit anfangen.
 
Zuletzt bearbeitet:
du hast entweder falsch gepostet oder die activities vertauscht in activity 1 heißt dein string ja "neuer test" nicht umgekehrt wie auch immer hier eine gute erklärung --->how to use getSharedPreferences in android - Stack Overflow


und du brauchst zahlen nicht zu casten du sagst einfach : 2f oder 1.2345f dann weiß dein compiler dass es sich um einen float handelt genauso bei 1d für double 1l für long und so wieter :)

Der ursprüngliche Beitrag von 17:46 Uhr wurde um 17:59 Uhr ergänzt:

UND schieb nach der ersten und zweiten activity ein editor.apply() ein um die daten auch zu persistieren also nach putint jeweils
 
  • Danke
Reaktionen: Paarn
Stimmt. Ich hatte die beiden Activities erst vertauscht. Aber das Grundproblem bleibt ja bestehen. ;)


Den Cast habe ich genutzt da der Compiler gemeckert hat. Danke für den Tipp mit dem f.
editor.apply() werde ich mal ausprobieren. Ich editiere in den Post das Ergebniss.
 

Ähnliche Themen

5
Antworten
22
Aufrufe
1.422
590239
5
R
  • RalfKahl
Antworten
10
Aufrufe
303
RalfKahl
R
D
Antworten
9
Aufrufe
1.767
jogimuc
J
Zurück
Oben Unten