У меня есть действие, которое позволяет пользователю загружать некоторые данные, когда они нажимают кнопку.Эти данные передаются в список, и в каждом элементе списка хранятся разные данные.Когда они щелкают по элементу списка, он запускает намерение, которое передает их новому классу.
Но когда я сохраняю первое значение, возвращенное после нажатия этой кнопки, то есть с помощью onStop () и с помощью SharedPreferences, и нажимаюна этом я получаю ошибку.Я думаю, что это может быть связано с намерением - элемент списка просто не прикрепляется к нему.Вот часть кода:
adapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, listItems );
setListAdapter( adapter );
list = getListView();
list.setOnItemClickListener( this );
if( settings.contains( "ARRAY_LIST_VALUE_0" ) )
{
listItems.add( 0, settings.getString( "ARRAY_LIST_VALUE_0",tempStore ) );
adapter.notifyDataSetChanged();
}
reload = (Button)findViewById( R.id.reloadTen );
reload.setOnClickListener( this );
// Original onItemClicked was in here
list.setTextFilterEnabled( true );
}
@Override
public void onItemClick(AdapterView<?> arg0, View listItem, int position, long arg3)
{
// 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 );
}
@Override
protected void onStop()
{
super.onStop();
SharedPreferences settings = getSharedPreferences( PREFS_NAME,0 );
SharedPreferences.Editor editor = settings.edit();
if( usrPrssdBtn )
{
// 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 );
editor.putString( "DATA",data[arryTrckr] );
}
}
editor.commit();
}
Итак, когда я запускаю упражнение и затем нажимаю назад, затем возвращаюсь к занятию, в котором находится сохраненный элемент списка.Проблема в том, что когда я нажимаю на кнопку, приложение вылетает.В чем проблема?Я получаю исключение NullPointerException в этой строке:
intent.putExtra( "info",data[position] );