2012-04-02 2 views
0

Ich habe einige Einstellungen erfolgreich neu geladen, wenn der Benutzer die Zurück-Taste am Telefon drückt. Wenn dies geschieht, speichere ich ihren Standort und das erste Element in einer Liste. Jetzt wird die Liste durch Drücken einer Bildschaltfläche erzeugt. Sobald die Liste erstellt wurde, können Sie auf ein Element drücken und es wird eine neue Klasse geladen.Listenelement wird nicht gestartet Aktivität beim erneuten Laden unter Gemeinsame Einstellungen

Aber wenn ich die Informationen aus der Liste abrufen und darauf klicken, stürzt die App ab und gibt mir eine Null-Zeiger-Ausnahme. Ich bin mir bewusst, was das ist, kann aber nicht verstehen warum. Hier ist mein Code:

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.new_sightings); 

    // Initialize location 
    user_lat_Value = (TextView)findViewById(R.id.lat_Value); 
    user_long_Value = (TextView)findViewById(R.id.long_Value); 

    // Have not received coordinates yet 
    gotCoord = false; 

    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems); 
    setListAdapter(adapter); 

    SharedPreferences settings = getSharedPreferences(PREFS_NAME,0); 

    if(settings.contains("ARRAY_LIST_VALUE_0") || settings.contains("LAT")) 
    { 
     user_lat_Value.setText(settings.getString("LAT", myNewLat)); 
     user_long_Value.setText(settings.getString("LONG", myNewLon)); 

     listItems.add(settings.getString("ARRAY_LIST_VALUE_0",tempStore)); 
     adapter.notifyDataSetChanged(); 
    } 

    reload = (Button)findViewById(R.id.reloadTen); 
    reload.setOnClickListener(this); 

    list = getListView(); 
    list.setOnItemClickListener(new OnItemClickListener() 
    { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     { 
      // Start an activity based on what list view item is pressed 
      Intent intent = new Intent(newSightings.this, newCompass.class); 

      // Pass the data we retrieved to the next activity 
      intent.putExtra("info",data[position] ); 
      startActivity(intent); 
     } 

    }); 
    list.setTextFilterEnabled(true); 
} 

@Override 
protected void onStop() 
{ 
    super.onStop(); 

    gotCoord = false; 

    SharedPreferences settings = getSharedPreferences(PREFS_NAME,0); 
    SharedPreferences.Editor editor = settings.edit(); 

    // Store the latitude and longitude values and then reload them if known 
    editor.putString("LAT",myNewLat); 
    editor.putString("LONG",myNewLon); 

    // Place first element of array list in storage 
    if(adapter.getCount() > 0) 
    { 
     Toast.makeText(getApplicationContext(), "Leaving Activity, Adapter Size: "+ adapter.getCount()+"\nStoring: "+listItems.get(0).toString(), Toast.LENGTH_SHORT).show(); 
     tempStore = listItems.get(0).toString(); 

     editor.putString("ARRAY_LIST_VALUE_0",tempStore); 

     /** 
     for(int i = 0; i < storeList.length; i++) 
     { 
      storeList[i] = listItems.get(i).toString(); 
      editor.putString("ARRAY_LIST_VALUE_"+i, listItems.get(i).toString()); 
     }  
     */ 
    } 
    editor.commit(); 

} 

mich korrigieren, wenn ich falsch bin, sondern weil ich die Daten in der Liste Adapter neu zu laden und drücken Sie sollte es nicht das Verhalten eines Elements in der Liste imitieren, wenn sie hatte gerade geladen worden ?

Ich bin verwirrt..Any Wörter?

Prost

+0

Was ist die Zeile der NullPointerException? – Samuel

+0

Zeile 114 - Was ist die intention.putExtra() Zeile – Katana24

Antwort

1

Basierend auf Ihren Kommentar, scheint es, dass die Daten Variable null ist und daher Daten [Position] eine Ausnahme auslöst. Vermutlich handelt es sich um Daten, die sich auf die Adapterposition beziehen, aber nicht auf etwas, das in onCreate() neu geladen wird.

+0

Ja, es lag daran, dass ich die Daten nicht richtig gespeichert hatte, daher konnte sie sich bei der Rückkehr nicht erinnern – Katana24

Verwandte Themen