TextView (Punktestand) erhöhen mit Variablen - Android Studio

  • Antworten:2
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 11

17.06.2019, 16:56:44 via Website

Guten Tag,

ich habe mein Minispiel zu Ende programmiert und diesem ein Punktestand hinzugefügt. Dieser Punktestand soll jetzt beim öffnen des nächsten Spiels per Button Klick übernommen werden. Den Punktestand habe ich einer variablen "s1" mit
String s1 = Counter.getText().toString();
zugeordnet und diesen mit dem Befehl
Intent i = new Intent(getBaseContext(), sectippen.class);
i.putExtra("Punkte", s1);
startActivity(i);

auch an die nächste Aktivity übergeben. Nun habe ich den Punktestand in der neuen Aktivity der variablen "s1" zugeordnet mit
String s1 = getIntent().getStringExtra("Punkte");
und den Punktestand mit tvCounter.setText(s1); schonmal auf 50 gesetzt (s1 = 50 (Punkte))

Nun soll der Button das TextView (tvCounter) bei jedem Klick um 5 erhöhen, also bei dem ersten Klick soll "55" angezeigt werden, beim zweiten Klick "60" usw.
Das sich das TextView bei jedem Klick um 5 erhöht habe ich schon hingekriegt, jedoch ohne den Anfangspunktestand von "s1".

Nun meine Frage: Wie bekomme ich es hin, dass "s1" bei jedem Klick um 5 erhöht wird?

Im folgenden einmal der gesamte Code des zweiten Minispiels (Ich weiß, der Code könnte auch schöner sein, jedoch hatte mein Mitschüler nicht sonderlich Lust selber nachzudenken):

package com.example.milos.orangensafttrinkspiel;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class sectippen extends Activity {

Button startButton;
Button pauseButton;

TextView timerValue;

long startTime = 0L;

Handler customHandler = new Handler();

long timeInMilliseconds = 0L;
long timeSwapBuff = 0L;
long updatedTime = 0L;

TextView tvCounter;
Button btnIncrement;

int counter = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sectippen);

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

    startButton = (Button) findViewById(R.id.startButton);
    tvCounter = findViewById(R.id.tvCounter);
    btnIncrement = findViewById(R.id.btnIncrement);

    //holt Punktestand aus vorherigem Spiel
    String s1 = getIntent().getStringExtra("Punkte");

    //Die App zeigt am Anfang null Punkte
    tvCounter.setText(s1);

    btnIncrement.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            counter =  counter + 5;


            tvCounter.setText(String.valueOf(counter));

        }
    });

    startButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            startTime = SystemClock.uptimeMillis();
            customHandler.postDelayed(updateTimerThread, 0);
            //startet den Timer
        }
    });

    pauseButton = (Button) findViewById(R.id.pauseButton);

    pauseButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {

            timeSwapBuff += timeInMilliseconds;
            customHandler.removeCallbacks(updateTimerThread);
            //pausiert den Timer
        }
    });

}

public Runnable updateTimerThread = new Runnable() {

    public void run() {

        timeInMilliseconds = SystemClock.uptimeMillis() - startTime;



        if (timeInMilliseconds< 30013){
            updatedTime = timeSwapBuff + timeInMilliseconds;

            int secs = (int) (updatedTime / 1000);
            int mins = secs / 60;
            secs = secs % 60;
            int milliseconds = (int) (updatedTime % 1000);
            timerValue.setText("" + mins + ":"
                    + String.format("%02d", secs) + ":"
                    + String.format("%03d", milliseconds));
        }else{
            customHandler.removeCallbacks(this);
        }
        customHandler.postDelayed(this, 0);

    }

};

}

Schonmal vielen Dank für jede Hilfe!

MfG
Milos

— geändert am 17.06.2019, 17:45:01

Diskutiere mit!
  • Forum-Beiträge: 775

17.06.2019, 18:04:43 via Website

Hallo
Du solltest deinen Counter auch auf den übergeben anfangswert setzen wert setzen und nicht auf 0

//holt Punktestand aus vorherigem Spiel
String s1 = getIntent().getStringExtra("Punkte");
counter = Integer.valueOf(s1);

— geändert am 17.06.2019, 18:11:50

Hilfreich?
Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.479

18.06.2019, 11:46:36 via App

Oder direkt als Integer Extra dem Intent übergeben, dann sparst du dir ein paar konvertierungen.

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

Hilfreich?
Diskutiere mit!