2012-04-11 17 views
0

Ich baue ein Android-Spiel, das speichert verwendet. Das bedeutet, dass ein Nutzer bis zu 5 einzigartige Spielstände im Spiel öffnen kann. Um einen neuen Speichervorgang zu erstellen, verwende ich SharedPreferences, damit der Benutzer einen Speichernamen eingeben und in meinem SharedPreferences-Ordner speichern kann. Der Benutzer wird dann zum Hauptspiel Activity with Intent Extra umgeleitet, das der Spielaktivität mitteilt, welche Speicherung zu öffnen ist.Android App Absturz (freigegebene Einstellungen)

In dem Design klingt alles ok, aber aus irgendeinem Grund hält meine Anwendung nur Kraft schließen. Ich habe keine Code-Fehler in Eclipse, und selbst LogCat zeigt keinen Fehler. Ich weiß nicht, was los ist ...

Hier ist mein Code:

package ent.com; 

import android.app.AlertDialog; 
import android.app.ListActivity; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ListView; 

public class Saves extends ListActivity{ 

String saves[] = { "Empty save", "Empty save", "Empty save", "Empty save", "Empty save"}; 
public static String filename = "SharedData"; 
SharedPreferences someData; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    someData = getSharedPreferences(filename, 0); 
    String save1 = someData.getString("0", "Empty save"); 
    String save2 = someData.getString("1", "Empty save"); 
    String save3 = someData.getString("2", "Empty save"); 
    String save4 = someData.getString("3", "Empty save"); 
    String save5 = someData.getString("4", "Empty save"); 

    saves[0] = save1; 
    saves[1] = save2; 
    saves[2] = save3; 
    saves[3] = save4; 
    saves[4] = save5; 

    setListAdapter(new ArrayAdapter<String>(Saves.this, android.R.layout.simple_list_item_1, saves)); 

} 

@Override 
protected void onListItemClick(ListView l, View v,int position, long id) { 
    final String clicked = saves[position]; 
    final String pos = getString(position); 
    super.onListItemClick(l, v, position, id); 
    if(clicked=="Empty save"){ 

     AlertDialog.Builder alert = new AlertDialog.Builder(this); 
     alert.setTitle("Input name"); 
     alert.setMessage("Give your team a name:"); 
     // Set an EditText view to get user input 
     final EditText input = new EditText(this); 
     alert.setView(input); 

     alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      String value = input.getText().toString(); 
      SharedPreferences.Editor editor = someData.edit(); 
      editor.putString(pos, value); 
      editor.commit(); 

      try{ 
      Class Joe = Class.forName("ent.com.TestActivity"); 
      Intent Joey = new Intent(Saves.this, Joe); 
      Joey.putExtra("save", clicked); 
      startActivity(Joey); 
      }catch(ClassNotFoundException e){ 
       e.printStackTrace(); 
      } 

      } 
     }); 

     alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
      Intent back = new Intent("ent.com.MENU"); 
      startActivity(back); 
      } 
     }); 

     alert.show(); 
    }else{ 
    try{ 
    Class ourClass = Class.forName("ent.com.TestActivity"); 
    Intent ourIntent = new Intent(Saves.this, ourClass); 
    ourIntent.putExtra("save", clicked); 
    startActivity(ourIntent); 
    }catch(ClassNotFoundException e){ 
     e.printStackTrace(); 
    } 
    } 
} 

} 

Vielen Dank für jede Hilfe.

+0

beim Schließen der Anwendung? Wenn Sie einen gespeicherten Status aus der Liste auswählen möchten? – 5hssba

+0

Post App Log wenn App schließt –

+0

dann bin ich 100% sicher, dass Sie irgendein Problem mit der Startaktivität auf Schaltfläche clcick haben –

Antwort

1

Bisher alles, was ich sehe, dass ein großes Problem ist folgendes:

if (clicked=="Empty save") 

== ist für Zahlen und Referenzvergleichs. Sie suchen:

if (clicked.equals("Empty save")) 

, die die Fäden in Frage tatsächlich vergleichen wird

+0

Fixed das, obwohl es immer noch nicht funktioniert .. Die zweite klicke ich auf ein Objekt In der Liste zeigt es mir die Force-Stop-Nachricht. Hast du noch andere Vorschläge? – arielschon12

+0

@ arielschon12 gut ... es gibt keinen Grund, super.onItemClick() zu nennen Ich weiß nicht, ob das eine Ausnahme werfen wird oder nicht, aber Sie sollten es wahrscheinlich nicht tun ... – JRaymond

+0

Ich denke, die Hauptsache Das verursacht die onClick-Dialogfunktion. Bevor ich es mit einigen Befehlen gefüllt habe, hat alles funktioniert und durch Klicken auf einen der Menüpunkte wird der Dialog angezeigt. es wird einfach nichts tun. Ich sollte wahrscheinlich auch erwähnen, dass ich vorher noch nichts mit SharedPreferences gemacht habe, ich habe nur die Befehle aus dem Internet benutzt. muss ich es irgendwie einrichten? – arielschon12

Verwandte Themen