Hallo Android-Developer-Community,
ich bin bzgl. der Android Programmierung ziemlich aus der Übung und würde gerne eure Ratschläge und Hilfe entgegen nehmen.
Was ich vorhabe ist, mit einem Chronometer Zeiten festzuhalten und von den letzten Zeiten an wieder zu beginnen. Klingt verwirrend, ich versuche es etwas einfacher zu erklären.
In meinem Layout habe ich einen Chronometer, 2 Buttons und 2 Textviews. Mehr nicht.
Wenn ich auf Button1 oder Button2 klicke, soll der Chronometer anfangen hochzuzählen, also ganz normal starten.
Das ding ist, er soll für jeden Button die eigenen Zeiten speichern. Wenn ich auf Button 1 klicke, fängt er an hochzuzählen. Drücke ich anschließend auf Button2, soll der mit dem hochzählen für Button1 aufhören und für Button2 anfangen hochzählen. Drücke ich wieder auf Button 1, dann soll er ab dann wieder hochzählen, wo er aufgehört hat. Das gleiche gilt auch für Button2. Falls ein Button zum 1. mal getätigt wird, soll es logischerweise von 00:00 beginnen. Ansonsten, von da an wo es aufgehört hat.
Was ich bis jetzt erreicht habe ist, dass es für Button1 normal hochzählt. Drücke ich auf Button2 wird der Zähler auf 0 gesetzt jedoch beim erneuten Wechsel auf Button1 wird weder der Wert des Chronometers gespeichert, noch wird der alte Wert von Button1 fortgeführt, sondern der Wert von Button2. Also ziemlich durcheinander und verwirrend
Hier sind die Codes:
public class Activity_Main extends Activity {
Chronometer chronometer;
boolean chronometerIsRunnung = false;
long time1 = 0;
long time2 = 0;
int i = 0;
Button btn1, btn2;
TextView tv_time1, tv_time2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
chronometer = (Chronometer)findViewById(R.id.chronometer);
btn1 = (Button)findViewById(R.id.button);
btn2 = (Button)findViewById(R.id.button2);
tv_time1 = (TextView)findViewById(R.id.textView1);
tv_time2 = (TextView)findViewById(R.id.textView2);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
i = 1;
isChronometerRunning();
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
i = 2;
isChronometerRunning();
}
});
}
public void isChronometerRunning() {
if(chronometerIsRunnung == false) {
if(i == 1) {
chronometer.setBase(SystemClock.elapsedRealtime() + time1);
tv_time1.setText("" + time1);
}
else if(i == 2) {
chronometer.setBase(SystemClock.elapsedRealtime() + time2);
tv_time2.setText("" + time2);
}
chronometer.start();
chronometerIsRunnung = true;
}
else {
if(i == 1) {
time1 = chronometer.getBase() - SystemClock.elapsedRealtime();
}
if(i == 2){
time2 = chronometer.getBase() - SystemClock.elapsedRealtime();
}
chronometer.stop();
chronometerIsRunnung = false;
}
}
}
Alles anzeigen
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="16dp"
tools:context="test_1.Activity_Main">
<Chronometer
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chronometer"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_marginTop="44dp"
android:layout_below="@+id/chronometer"
android:layout_alignLeft="@+id/button2"
android:layout_alignStart="@+id/button2" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2"
android:layout_below="@+id/button"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/textView1"
android:layout_centerVertical="true"
android:layout_alignLeft="@+id/button2"
android:layout_alignStart="@+id/button2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/textView2"
android:layout_below="@+id/textView1"
android:layout_alignRight="@+id/button2"
android:layout_alignEnd="@+id/button2"
android:layout_marginTop="41dp"
android:layout_alignLeft="@+id/textView1"
android:layout_alignStart="@+id/textView1" />
</RelativeLayout>
Alles anzeigen
Leider musste ich auch eine stop.funktion mit einbringen, wobei ich das eigentlich nicht möchte. Was genau mache ich hier falsch oder an was habe ich nicht gedacht?
Wäre euch sehr dankbar für jede kleine Hilfe.
Danke im Voraus