Android SharedPreferences und Frage übergabe an 2te Activity

  • Antworten:7
  • Bentwortet
sebastian schulz
  • Forum-Beiträge: 6

05.10.2018, 21:03:13 via Website

Hallo Leute,

ich habe mal eine Verständnisfrage und Zwar habe ich die Klasse Einstellungen

public void onClick(View v) {
if (prefs.getBoolean(TON, true)) {
prefsedit.putBoolean(TON, false);
prefsedit.commit();
} else {
prefsedit.putBoolean(TON, true);
prefsedit.commit();
}
Allgemein.tonAbspielen(Einstellungen.this, "menue");
}
});
}
//===========================Gebe Boolen =======================================================================

public boolean getTonBoolean() {
    final SharedPreferences prefs;
    final SharedPreferences.Editor prefsedit;
    final String TON = "TON";
    prefs = this.getSharedPreferences("Speicher", MODE_PRIVATE);
    boolean x = prefs.getBoolean(TON, true);
    return x;
}

die Methode gibt mir auch den Boolen zurück, leider gibt es mir wenn ich die Methode auslager ein Runtime error

 public static void tonAbspielen(Context context, String datei) {
    Einstellungen einstellungen = new Einstellungen();
    boolean x = einstellungen.getTonBoolean();
    if (x) {
        try {
            Uri uri = Uri.parse("android.resource://com.example.sebastian.trinkio/raw/" + datei);
            MediaPlayer mediaPlayer = MediaPlayer.create(context, uri);
            mediaPlayer.start();
            mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mediaPlayer) {
                    mediaPlayer.release();
                }
            });
        } catch (Exception e) {
            toast(context, "Musikdatei konnte nicht gefunden werden");
        }
    }
}

}

Und wie ist es möglich eine Arrayliste in die nächste Activtiy zu übergeben, diese soll nur während die App gestaret ist gespeichert werden?

— geändert am 05.10.2018, 21:11:06

Kommentieren
Beste Antwort
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.10.2018, 22:18:23 via Website

Ne, eine Activity ist deutlich mehr. Da hängt alles mögliche dran, denn dem User wird i.d.r dann ein Layout etc angezeigt.

Nimm eine normale Klasse und übergib den Context als Methodenparameter.

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

Hilfreich?
sebastian schulz
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.10.2018, 21:23:12 via Website

Hallo Sebastian,
bist du sicher, dass die SharedPrefs passend gelesen werden?
Du maschst in deinen Einstellungen ein
this.SharedPreferences woher kommt das ohne Context oder bezug auf die Activity?
Poste mal mehr code aus dieser Klasse

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

Hilfreich?
Kommentieren
sebastian schulz
  • Forum-Beiträge: 6

05.10.2018, 21:56:50 via Website

package com.example.sebastian.trinkio;

import android.content.Context;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextClock;
import android.widget.TextView;

public class Einstellungen extends AppCompatActivity {
TextView tv;

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

//========================================Ton an/aus================================================
ImageButton btn_ton; //Button Ton
//Shared Prefenrces
final SharedPreferences prefs;
final SharedPreferences.Editor prefsedit;
final String TON = "TON";
prefs = this.getSharedPreferences("Speicher", MODE_PRIVATE);
prefsedit = prefs.edit();
tv = (TextView) findViewById(R.id.textView2);
btn_ton = (ImageButton) findViewById(R.id.btn_tonaendern);
btn_ton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (prefs.getBoolean(TON, true)) {
prefsedit.putBoolean(TON, false);
prefsedit.commit();
} else {
prefsedit.putBoolean(TON, true);
prefsedit.commit();
}
Allgemein.tonAbspielen(Einstellungen.this, "menue");
}
});
}
//===========================Gebe Boolen =======================================================================

public boolean getTonBoolean() {
    final SharedPreferences prefs;
    final SharedPreferences.Editor prefsedit;
    final String TON = "TON";
    prefs = this.getSharedPreferences("Speicher", MODE_PRIVATE);
    boolean x = prefs.getBoolean(TON, true);
    return x;
}

}
Hier meine gesamte Klasse Einstellungen

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.10.2018, 21:58:50 via Website

Dui musst aufpassen, deine Klasse Einstellungen ist eine Activity, nicht nur eine Klasse.
d.h. entweder die Activity "wegmachen" oder per Intent wirklich starten, aber ich glaube du willst aber das als Tools Klasse zum kapseln der SharedPrefs

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

Hilfreich?
Kommentieren
sebastian schulz
  • Forum-Beiträge: 6

05.10.2018, 22:16:17 via Website

Ja das ganze soll als Kapslung dienen, wie muss ich das den genau machen, bzw. welche Stichwörter muss ich googeln. Ich dachte immer jede Activity + entspr. Klasse funktioniert wie ne normale Klasse

Hilfreich?
Kommentieren
Beste Antwort
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.10.2018, 22:18:23 via Website

Ne, eine Activity ist deutlich mehr. Da hängt alles mögliche dran, denn dem User wird i.d.r dann ein Layout etc angezeigt.

Nimm eine normale Klasse und übergib den Context als Methodenparameter.

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

Hilfreich?
sebastian schulz
Kommentieren
sebastian schulz
  • Forum-Beiträge: 6

05.10.2018, 22:43:31 via Website

Vielen Dank es funktioniert <3

wie kann ich den eine Arrayliste von Activity 1 an Activty 2 geben bräuchte dazu einfach mal ein Stichwort mit dem ich googeln kann

Vielen Dank <3

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

06.10.2018, 09:02:22 via App

Schau dir die IntentExtras an den kannst du das mitgeben

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

Hilfreich?
Kommentieren