Crash nach Speichern von Einstellungen

N

nidhoeggr

Neues Mitglied
0
Hallo!

Erst mal die Ausgangslage:

Ich habe ein Activiy, die einen Dialog mit einem Eingabefeld aufruft. Der Benutzer gibt seinen Namen ein und klickt ok :

#code ... #
builder.setPositiveButton(this.getResources().getString(R.string.ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {

hs.addScore(input.getText().toString().trim(), score);
hs.saveList();

startActivity(intent_main);

}
});


hs ist eine Highscoreliste vom typ Highscore. saveList() sieht folgendermaßen aus:

SharedPreferences preferences = context.getSharedPreferences("Highscore", 0);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();

for (int x=0; x<max; x++)
{
editor.putString("name"+x, this.names[x]);
editor.putLong("score"+x, this.score[x]);
}

editor.commit();


Ich hab nun folgendes problem:

wenn ich das saveList() ausführe, stürzt das Programm bei startActivity ab. Wenn ich das saveList() weglasse, startet die Activity ganz normal. An anderer Stelle hat das saveList() alleine auch schon funktioniert. Nur die Kombi geht nicht.

Muss ich den Editor irgendwie "abschließen" oder sowas in der Art - ich häng da jetzt schon zwei Tage dran und finde keine vernünftige Lösung.

Wäre über ein paar Lösungsideen sehr dankbar :)
mfg
 
Stacktrace?
 
Wenn damit die Ausgabe der Fehler bei LogCat gemeint ist:

09-02 09:39:25.994: ERROR/AndroidRuntime(2683): Uncaught handler: thread main exiting due to uncaught exception
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): java.lang.RuntimeException: Unable to start activity ComponentInfo{nidhoeggr.squares/nidhoeggr.squares.SquarePanic}: android.view.InflateException: Binary XML file line #10: Error inflating class <unknown>
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.os.Handler.dispatchMessage(Handler.java:99)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.os.Looper.loop(Looper.java:123)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.app.ActivityThread.main(ActivityThread.java:4363)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at java.lang.reflect.Method.invokeNative(Native Method)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at java.lang.reflect.Method.invoke(Method.java:521)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at dalvik.system.NativeStart.main(Native Method)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class <unknown>
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.view.LayoutInflater.createView(LayoutInflater.java:513)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.app.Activity.setContentView(Activity.java:1622)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at nidhoeggr.squares.SquarePanic.onCreate(SquarePanic.java:58)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): ... 11 more
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): Caused by: java.lang.reflect.InvocationTargetException
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at nidhoeggr.squares.SquareView.<init>(SquareView.java:823)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at java.lang.reflect.Constructor.constructNative(Native Method)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.view.LayoutInflater.createView(LayoutInflater.java:500)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): ... 21 more
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): Caused by: java.lang.ClassCastException: java.lang.Long
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at android.app.ApplicationContext$SharedPreferencesImpl.getInt(ApplicationContext.java:2595)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at nidhoeggr.squares.Highscore.<init>(Highscore.java:29)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): at nidhoeggr.squares.SquareView$SquareThread.<init>(SquareView.java:165)
09-02 09:39:26.064: ERROR/AndroidRuntime(2683): ... 25 more
09-02 09:40:41.330: ERROR/AndroidRuntime(2762): Uncaught handler: thread main exiting due to uncaught exception
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): java.lang.RuntimeException: Unable to start activity ComponentInfo{nidhoeggr.squares/nidhoeggr.squares.GameOverActivity}: java.lang.ClassCastException: java.lang.Long
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at android.os.Handler.dispatchMessage(Handler.java:99)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at android.os.Looper.loop(Looper.java:123)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at android.app.ActivityThread.main(ActivityThread.java:4363)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at java.lang.reflect.Method.invokeNative(Native Method)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at java.lang.reflect.Method.invoke(Method.java:521)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at dalvik.system.NativeStart.main(Native Method)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): Caused by: java.lang.ClassCastException: java.lang.Long
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at android.app.ApplicationContext$SharedPreferencesImpl.getInt(ApplicationContext.java:2595)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at nidhoeggr.squares.Highscore.<init>(Highscore.java:29)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at nidhoeggr.squares.GameOverActivity.onCreate(GameOverActivity.java:29)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-02 09:40:41.338: ERROR/AndroidRuntime(2762): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)


Falls du was anderes meinst, erklärs mir bitte!

Danke, mfg
 
steht ja da

deine xml datei hat in zeile 10 einen fehler
 
Das ist das XML File um das es geht, ich kann mir aber irgendwie nicht vorstellen dass da ein Fehler drin ist .... es funktioniert ja nur in diesem speziellen Fall nicht.

Kurze Grundsatzfrage: Ich bin in Activity A und mach einen neuen Intent und rufe mit startActivity die Activity B auf - wenn ich nun wieder zu A zurück will muss ich doch wieder einen neuen Intent machen und so aufrufen wie bei B oder? muss ich die Activity A vom Hintergrund herausholen? Ich könnte mir vorstellen, dass ich das irgendwie falsch machen ...

<?xml version="1.0" encoding="utf-8"?>


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:screenOrientation="portrait">

<nidhoeggr.squares.SquareView <!-- DAS IST ZEILE 10. -->
android:id="@+id/square"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/text"
android:text="@string/square_layout_text_text"
android:visibility="visible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center_horizontal"
android:textColor="#000000"
android:textSize="24sp"/>
</RelativeLayout>

</FrameLayout>
 
Dann wäre es wohl interessant zu sehen was in SquareView passiert.

Zur Grundsatzfrage: Wenn du nur zurück möchtest kannst du auch einfach die aktuelle Activity beenden.
 
Also in SquareView läuft das ganze Spiel in einem Thread - so wie in dem LunarLander Beispiel. Ich hab dabei nur das Spielgeschehen im Thread verändert. Aber es muss doch einen Grund geben, warum der Fehler nur kommt wenn ich vorher die Einstellungen speicher?!

Wie beende ich eine Activity ohne gleich alles zu beenden? Wenn ich ein finish() mach geht alles zu, und beim erneuten öffnen stürzt wieder alles ab.

Wenn ich im saveList() nur die Zeile
Code:
editor.commit();
weglasse, funktioniert alles einwandfrei. Nur wird mir die Punktezahl dann eben nicht gespeichert. Wie speichert man normalerweise eine Highscoreliste? Macht man das nicht mit SharedPreferences und einem Editor?

Vielen Dank für deine Hilfe!
mfg
 

Ähnliche Themen

B
Antworten
6
Aufrufe
1.049
jogimuc
J
5
Antworten
22
Aufrufe
1.417
590239
5
OnkelLon
Antworten
13
Aufrufe
1.974
OnkelLon
OnkelLon
Zurück
Oben Unten