Мне удалось успешно перезагрузить определенные настройки, когда пользователь нажимает кнопку возврата на телефоне. Когда это происходит, я сохраняю их местоположение и первый элемент в списке. Теперь список генерируется нажатием кнопки изображения. Как только список будет создан, вы можете нажать на любой элемент, и он загрузит новый класс.
Но когда я вспоминаю информацию из списка и нажимаю на нее, приложение вылетает, давая мне
Исключение нулевого указателя. Я знаю, что это такое, но не могу понять, почему. Вот мой код:
@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();
}
Исправьте меня, если я ошибаюсь, но потому что я перезагружаю данные в адаптер списка и нажимаю на них, не должно ли это имитировать поведение элемента в списке, если он только что был загружен?
Я в замешательстве .. Есть слова?
Приветствия