Problem bei Appentwicklung

  • 4 Antworten
  • Neuester Beitrag
Diskutiere Problem bei Appentwicklung im Android Spiele Entwicklung im Bereich Android App Entwicklung.
T

Tobls22

Neues Mitglied
Hi Leute,
ich bin gerade dabei eine app zu programmieren, habe aber einen Fehler:
Momentan soll wenn man auf einen knopf klickt ein wert um 1 erhöht werden und dann im textview stehen.
allerdings ist es momntan so, dass beim ersten klick der wert auf -1 oder 1 geht und danach auf 0 bleibt wenn ich drücke
Hier ist mein code:

package de.tobls.steinreich;

import android.content.SharedPreferences;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.widget.TabHost;
import android.widget.TextView;




public class MainActivity extends ActionBarActivity implements View.OnClickListener {

protected long stones;
protected long spc = 1;
protected long pricePickaxe = 1;

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

TextView textviewQtystone = (TextView) findViewById(R.id.textviewQtystone);


SharedPreferences Speicher = getSharedPreferences("Datastorage", 0);
stones = Speicher.getLong("S", 0);
spc = Speicher.getLong("SPC", 0);
textviewQtystone.setText(String.valueOf(stones));


TabHost tabHost = (TabHost) findViewById(R.id.tabHost);
tabHost.setup();

TabHost.TabSpec tabSpec = tabHost.newTabSpec("resource");
tabSpec.setContent(R.id.tabResource);
tabSpec.setIndicator("Resource");
tabHost.addTab(tabSpec);

tabSpec = tabHost.newTabSpec("shop");
tabSpec.setContent(R.id.tabShop);
tabSpec.setIndicator("Shop");
tabHost.addTab(tabSpec);


ImageButton imgbuttonCounter = (ImageButton) findViewById(R.id.imgbuttonCounter);
imgbuttonCounter.setOnClickListener(this);

Button buttonBuypickaxe = (Button) findViewById(R.id.buttonBuypickaxe);
buttonBuypickaxe.setOnClickListener(this);


}

@override
public void onClick(View v) {
switch (v.getId()){
case R.id.imgbuttonCounter:
TextView textviewQtystone = (TextView) findViewById(R.id.textviewQtystone);
SharedPreferences Speicher = getSharedPreferences("Datastorage", 0);
spc = Speicher.getLong("SPC", 1);
stones = stones + spc;
textviewQtystone.setText(String.valueOf(stones));
case R.id.buttonBuypickaxe:
textviewQtystone = (TextView) findViewById(R.id.textviewQtystone);
Speicher = getSharedPreferences("Datastorage", 0);
stones = Speicher.getLong("S", 0);
if (stones <= pricePickaxe) {
spc = spc + 2;
SharedPreferences.Editor Speichereditor = Speicher.edit();
Speichereditor.putLong("SPC", spc);
Speichereditor.commit();
stones = stones - pricePickaxe;
pricePickaxe = pricePickaxe * (25/100);
textviewQtystone.setText(String.valueOf(stones));
}
}
}
}
Kann mir bitte jemand helfen??
 
Thyrion

Thyrion

Ehrenmitglied
Ist es Absicht, dass dein Switch-/Case-Statement keine "break"-Statements enthält?
 
T

Tobls22

Neues Mitglied
:scared:Nein das war keine Absicht...
Jetzt funktioniert alles außer, dass beim kauf einer spitzhacke momentan das geld auf 0 gesetzt wird, statt dass der preis der spitzhacke abgezogen wird
Woran könnte das liegen?
 
Thyrion

Thyrion

Ehrenmitglied
Ich denke mal "stones" ist die Währung?
Was steht denn in deinen SharedPreferences unter "S" zum Zeitpunkt der Ausführung?

Etwas merkwürdig finde ich auch dieses If_Statement:
if (stones <= pricePickaxe)

Wenn ich weniger oder gleichviele Steine habe, wie eine Axt kostet, dann wird SPC erhöht, gespeichert und dann weiterhin der Preis der Axt von stones abgezogen und anschließend der Preis der Axt erhöht.
Falls die Bedingung nicht zutrifft (also man mehr Steine hat, als eine Axt koset), passiert.... Nichts.
 
T

Tobls22

Neues Mitglied
Also in S steht die Anzahl der steine

das mit dem if statement hab ich gerade auch bemerkt und geändert hat aber nichts geholfen

Edit:
habe den Fehler gefunden:
Ich habe vergessen die neue steinanzahl den shared preferences zu übergeben nachdem ich auf den knopf geklickt hat, wo man +1 stein bekommt

Nochmal danke für eure Hilfe!