- Forum-Beiträge: 6
13.04.2014, 20:15:02 via Website
13.04.2014 20:15:02 via Website
ich habe eine App programmiert, welche es ermöglicht Zeiten zu speichern.
Nun habe ich das Problem, dass die Anwendung nach der 4. Speicherung einer Zeit abstürzt.
Ich weiß nicht woran dass liegen kann. In der Logcat wird das hier geschrieben(was eigentlich nicht sein kann):
Hier ist mein Code der Problemklasse:
[code]package cedrik.com.sportlerapp1;
import java.sql.Timestamp;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Tabelle extends Activity
{
Button zurück, reset;
Timer timer;
TextView Namen[] =new TextView[8];
TextView Zeit[] =new TextView[8];
TextView Uhrzeit[] =new TextView[8];
String fertig_zeit_String[] = {"1","2","3","4","5","6","7","8"};
String Name_string[] = {"11","22","33","4","55","66","77","88"};
String jetzt_uhrzeit[] ={"111","222","333","444","555","666","777","888"};
int Jetztzeit[]=new int[8];
String Name[]=new String[8];
int laufzeit[]= new int[8];
Uhrzeitklasse dauerzeit = new Uhrzeitklasse();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tabelle1);
zurück = (Button) findViewById(R.id.button1);
reset = (Button) findViewById(R.id.button2);
Namen[0] = (TextView) findViewById(R.id.textView4);
Namen[1] = (TextView) findViewById(R.id.textView7);
Namen[2] = (TextView) findViewById(R.id.textView10);
Namen[3] = (TextView) findViewById(R.id.textView13);
Namen[4] = (TextView) findViewById(R.id.textView16);
Namen[5] = (TextView) findViewById(R.id.textView19);
Namen[6] = (TextView) findViewById(R.id.textView22);
Namen[7] = (TextView) findViewById(R.id.textView25);
Zeit[0] = (TextView) findViewById(R.id.textView5);
Zeit[1] = (TextView) findViewById(R.id.textView8);
Zeit[2] = (TextView) findViewById(R.id.textView11);
Zeit[3] = (TextView) findViewById(R.id.textView14);
Zeit[4] = (TextView) findViewById(R.id.textView17);
Zeit[5] = (TextView) findViewById(R.id.textView20);
Zeit[6] = (TextView) findViewById(R.id.textView23);
Zeit[7] = (TextView) findViewById(R.id.textView26);
Uhrzeit[0] = (TextView) findViewById(R.id.textView6);
Uhrzeit[1] = (TextView) findViewById(R.id.textView9);
Uhrzeit[2] = (TextView) findViewById(R.id.textView12);
Uhrzeit[3] = (TextView) findViewById(R.id.textView15);
Uhrzeit[4] = (TextView) findViewById(R.id.textView18);
Uhrzeit[5] = (TextView) findViewById(R.id.textView21);
Uhrzeit[6] = (TextView) findViewById(R.id.textView24);
Uhrzeit[7] = (TextView) findViewById(R.id.textView27);
zurück.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent Weiterleitung =new Intent(Tabelle.this,Stoppuhr.class);
startActivity(Weiterleitung);
finish();
}
});
reset.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences test = getSharedPreferences("Stoppuhr1", MODE_PRIVATE);
for(int i=0;i<8;i++)
{
test.edit().remove(fertig_zeit_String[i]).commit();
test.edit().remove(Name_string[i]).commit();
test.edit().remove(jetzt_uhrzeit[i]).commit();
}
test.edit().remove("iZahl").commit();
}
});
}
protected void onResume()
{
super.onResume();
timer = new Timer(getString(R.string.app_name));
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run()
{
for(int i=0;i<8;i++)
{
SharedPreferences pref = getSharedPreferences("Stoppuhr1", MODE_PRIVATE);
laufzeit[i] = pref.getInt(fertig_zeit_String[i], 0);
Name[i] = pref.getString(Name_string[i], "xy");
Jetztzeit[i] = pref.getInt(jetzt_uhrzeit[i], 0);
}
for(int i=0; i<8;i++)
{
if(laufzeit[i]==0)
{
Zeit[i].setText("");
}
else if(laufzeit[i]!=0)
{
Zeit[i].setText(""+dauerzeit.Zeit_inStringuhrzeit_inms(laufzeit[i]));
}
if(Jetztzeit[i]==0)
{
Uhrzeit[i].setText("");
}
else if(Jetztzeit[i]!=0)
{
Uhrzeit[i].setText(""+dauerzeit.Zeit_in_Stringuhrzeit(Jetztzeit[i]));
}
if(Name[i]=="xy")
{
Namen[i].setText("");
}
else if(Jetztzeit[i]!=0)
{
Namen[i].setText(""+Name[i]);
}
}
}
});
}
}, 0, 2000);
}
}[/code]
und hier der Coder der Hauptklasse:
[code]package cedrik.com.sportlerapp1;
import java.sql.Timestamp;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Stoppuhr extends Activity {
Button Tabelle, Start_Stopp, Save;
EditText Nameneingabe;
TextView Stoppzeit, Uhrzeit;
boolean Start_Stopp_Status=false;
int zähler =1;
int fertige_zeit=0;
String fertig_zeit_String[] = {"1","2","3","4","5","6","7","8"};
String Name_string[] = {"11","22","33","4","55","66","77","88"};
String jetzt_uhrzeit[] ={"111","222","333","444","555","666","777","888"};
int i=0;
Timer timer;
Uhrzeitklasse diezeit = new Uhrzeitklasse();
long zeit1=0,zeit2=0;
int zeitminuszeit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stoppuhr);
Tabelle = (Button) findViewById(R.id.button1);
Start_Stopp = (Button) findViewById(R.id.button2);
Save = (Button) findViewById(R.id.button3);
Stoppzeit = (TextView) findViewById(R.id.textView2);
Uhrzeit = (TextView) findViewById(R.id.textView1);
Nameneingabe = (EditText) findViewById(R.id.editText1);
Stoppzeit.setText("00:00:00,0000");
Start_Stopp.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Start_Stopp_Status = true;
if(zähler%2==1)
{
Start_Stopp.setText("Stopp");
}
else if(zähler%2==0)
{
Start_Stopp.setText("Start");
}
zähler++;
}
});
Save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences test = getSharedPreferences("Stoppuhr1", MODE_PRIVATE);
i = test.getInt("iZahl", 0);
Editor editor = test.edit();
editor.putInt(fertig_zeit_String[i],fertige_zeit).commit();
editor.putString(Name_string[i],Nameneingabe.getText().toString()).commit();
editor.putInt(jetzt_uhrzeit[i], diezeit.Sekundenanzahl_des_tages()).commit();
i++;
editor.putInt("iZahl", i).commit();
editor.commit();
}
});
Tabelle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
Intent Weiterleitung = new Intent(Stoppuhr.this, Tabelle.class);
startActivity(Weiterleitung);
finish();
}
});
}
protected void onResume()
{
super.onResume();
timer = new Timer(getString(R.string.app_name));
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run()
{
Timestamp time1 = new Timestamp(System.currentTimeMillis());
zeit1 = time1.getTime();
Uhrzeit.setText(""+diezeit.Zeit_in_Stringuhrzeit(diezeit.Sekundenanzahl_des_tages()));
if(zeit2!=0&& Start_Stopp_Status==false)
{
zeitminuszeit = (int)(zeit1-zeit2);
Stoppzeit.setText(diezeit.Zeit_inStringuhrzeit_inms(zeitminuszeit));
}
if(zeit2==0 && Start_Stopp_Status==true)
{
Timestamp time2 = new Timestamp(System.currentTimeMillis());
zeit2 = time2.getTime();
Start_Stopp_Status=false;
}
if(zeit2!=0 && Start_Stopp_Status==true)
{
fertige_zeit=(int)(zeit1-zeit2);
Stoppzeit.setText(diezeit.Zeit_inStringuhrzeit_inms(fertige_zeit));
zeit2=0;
Start_Stopp_Status=false;
}
}
});
}
}, 0, 50);
}
}
[/code]
Wenn man in der Logcat auf die verschiedenen Zeilen klickt kommt man auf:
laufzeit[i] = pref.getInt(fertig_zeit_String[i], 0);(wenn man diese Zeile auskommentiert, dann funktioniert alles, bis auf dass die lauf zeit angezeigt wird.)
Danke schon mal im Voraus
Cedrik Laue
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.