Hallo zusammen,
ich hoffe Ihr könnt mir weiterhelfen:
Ich wollte einen Zähler programmieren, welcher nach einem erneuten Start immernoch auf der Zahl steht, wie beim schließen.
Außerdem soll ein extra View den Counter anzeigen, welcher beim letzten Reset (Über Button) stand.
Das speichern an sich klappt. Nur sobald ich den Hauptcounter mit dem Count_Button weiter zählen lassen will, fängt dieser wieder von 0 an.
Ich finde leider den Fehler nicht. Gibt es eventuell eine bessere Speichermethode? Hat jemand ne Idee?
Hier der Code:
package com.example.flava.counter;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
int counter, counter_alt;
Button count_button, back_button, reset_button;
TextView anzeige1, anzeige2, anzeige3;
SharedPreferences speicher;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
count_button = (Button) findViewById(R.id.count_button);
back_button = (Button) findViewById(R.id.back_button);
reset_button = (Button) findViewById(R.id.reset_button);
anzeige1 = (TextView) findViewById(R.id.anzeige1);
anzeige2 = (TextView) findViewById(R.id.anzeige2);
anzeige3 = (TextView) findViewById(R.id.last_counter);
speicher = getApplicationContext().getSharedPreferences("Daten", 0);
editor = speicher.edit();
TextLaden("Data1", counter);
anzeige2.setText(String.valueOf(speicher.getString("Data1", null)));
TextLaden("Data2", counter_alt);
anzeige3.setText(String.valueOf(speicher.getString("Data2", null)));
count_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter++;
TextSpeichern("Data2", String.valueOf(counter_alt));
TextSpeichern("Data1", String.valueOf(counter));
anzeige2.setText(String.valueOf(counter));
}
});
back_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(counter > 0) {
counter--;
TextSpeichern("Data1", String.valueOf(counter));
anzeige2.setText(String.valueOf(counter));
}
else{
Rücksetzen();
anzeige2.setText(String.valueOf(counter));
}
}
});
reset_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter_alt = counter;
TextSpeichern("Data2", String.valueOf(counter_alt));
anzeige3.setText(String.valueOf(counter_alt));
Rücksetzen();
TextSpeichern("Data1", String.valueOf(counter));
anzeige2.setText(String.valueOf(counter));
}
});
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void TextLaden(String name, int inhalt ){
if(speicher.getString(name, null) != null){
inhalt = Integer.valueOf(speicher.getString(name, null));
}
}
private void TextSpeichern(String name, String inhalt){
if(inhalt != null) {
editor.putString(name, inhalt);
editor.commit();
Toast.makeText(this, "Hallo", Toast.LENGTH_LONG);
}
}
private void Rücksetzen(){
counter = 0;
}
}