Einige Probleme...

  • Antworten:28
  • OffenNicht stickyBentwortet
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 6.651

22.12.2013 15:34:02 via App

impjor
Mal abgesehen davon, dass der Code sehr unübersichtlich ist, speicherst du immer noch falsch.
Mach am besten zwei Funktionen. Die erste prüft, ob erster Start o. Update und zeigt deine Meldung an, die zweite speichert die aktuelle Version in SharedPreferences.
Dann wird alles übersichtlicher und du erkennst den Fehler.

LG

Da kann ich dir nur zustimmen. ist aber typischer Anfänger fehler alles in ein. spreche aus Erfahrung. :-)

Gruß Ludy

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

  • Forum-Beiträge: 346

22.12.2013 20:01:11 via Website

Was meint ihr mit "alles in ein"? Sorry, wenn ich mich jetzt doof anstelle :)

So etwa:

1int version = 0;
2
3 @Override
4 protected void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6
7 PackageManager manager = this.getPackageManager();
8 PackageInfo info = null;
9 try {
10 info = manager.getPackageInfo(this.getPackageName(), 0);
11 } catch (NameNotFoundException e) {
12 // TODO Auto-generated catch block
13 e.printStackTrace();
14 }
15
16 int version = info.versionCode;
17 SharedPreferences sharedPref = getSharedPreferences("Updatepref", 0);
18 SharedPreferences.Editor editor = sharedPref.edit();
19 Integer ver = sharedPref.getInt("ver", version);
20 editor.commit();
21 if (ver == null) {
22 // dies ist erster Start
23
24 setContentView(R.layout.first_start);
25 } else if (ver > sharedPref.getInt("ver", version)) {
26
27 // Jetziger Wert größer als vorher = Update
28 setContentView(R.layout.first_start);
29
30 }
31 editor.putInt("ver", version);
32 editor.commit();
33
34 if (ver < sharedPref.getInt("ver", version)) {
35 // Jetziger Wert kleiner als vorher = kein Update
36
37 setContentView(R.layout.activity_main);
38 } else if (ver == sharedPref.getInt("ver", version)) {
39 // Jetziger Wert genauso groß wie vorher = kein Update
40
41 setContentView(R.layout.activity_main);
42 }
43 }

Ich werde wirklich noch irre! Es kann doch wohl nicht so schwierig sein!!!!

Also:

In jedem Fall brauche ich den Package Manager zu Anfang um den Versions Code herauszufinden. Und ich muss in den Shared Preferences nachsehen, ob ein Wert überhaupt vorhanden ist.
Wenn nicht wird geprüft ob die aktuelle höher liegt als die aus den Shared Preferences.

Danach weiß ich nicht mehr, was zu tun ist :/

— geändert am 22.12.2013 20:39:27

Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 6.651

22.12.2013 21:20:32 via App

Alles in ein heißt das du alles in der onCreate definierst und keine Methode erstellst für jede Aufgabe. Du wirst das früher oder später mitbekommen spreche aus Erfahrung.

Edit: für was brauchst du die Version Update abfrage???

Hier nen kleines Beispiel:
1private SharedPreferences sharedPref;
2 private Editor editor;
3
4 @Override
5 protected void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7
8 setContentView(R.layout.activity_main);
9
10 sharedPref = getSharedPreferences("Einstellungen", Context.MODE_PRIVATE);
11 editor = sharedPref.edit();
12
13 if (sharedPref.getInt("firstStart", -1) < 0) {
14 // starte Dialog mit allen EinstellungenParametern und prüfe ob alle Angaben gemacht wurden sind.
15 // Danach dann mit:
16// editor.putInt("firstStart", 0);
17// editor.putString("Vorname", "Max");
18// editor.putString("Nachname", "Mustermann");
19// editor.putInt("Alter", 18);
20// und dann ->>>>>> editor.commit();
21 } else {
22 // starte Activity normal
23 }
24 }

Gruß Ludy

— geändert am 22.12.2013 22:03:41

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

  • Forum-Beiträge: 346

22.12.2013 22:26:32 via Website

Okay.

für was brauchst du die Version Update abfrage???

Falls du meinst warum ich das ganze mache: Ich möchte den Nutzern beim ersten Start oder nach einem Update eine Hilfe zeigen.

Ich soll also sozusagen in der oncreate Platz sparen?

Leider weiß ich trotzdem nicht mehr weiter :(
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 6.651

22.12.2013 23:48:06 via Website

1try {
2 aktuelleAppVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
3 } catch (NameNotFoundException e) {
4 aktuelleAppVersion = -1;
5 e.printStackTrace();
6 }
7
8 sharedPref = getSharedPreferences("Einstellungen", Context.MODE_PRIVATE);
9 editor = sharedPref.edit();
10
11 if (sharedPref.getInt("firstStart", -1) < 0 || sharedPref.getInt("appVersion", -1) < aktuelleAppVersion) {
12 // starte Dialog mit Hilfe und prüfe ob alle
13
14 // Danach dann mit wenn im Dialog okay geklickt dann:
15 // editor.putInt("appVersion", aktuelleAppVersion);
16 // editor.putInt("firstStart", 0);
17 // editor.commit();
18 } else {
19 // starte Activity normal
20 }
21 }

Gruß Ludy

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

  • Forum-Beiträge: 346

23.12.2013 13:55:15 via Website

Danke, hat nach einigen Anpassungen funktioniert. Einen Teil habe ich jedoch noch nicht verstanden:

1if (sharedPref.getInt("firstStart", -1) < 0 || sharedPref.getInt("appVersion", -1) <

Wofür steht da das "||"?