Элемент списка не запускает действие при перезагрузке общими настройками - PullRequest
0 голосов
/ 02 апреля 2012

Мне удалось успешно перезагрузить определенные настройки, когда пользователь нажимает кнопку возврата на телефоне. Когда это происходит, я сохраняю их местоположение и первый элемент в списке. Теперь список генерируется нажатием кнопки изображения. Как только список будет создан, вы можете нажать на любой элемент, и он загрузит новый класс.

Но когда я вспоминаю информацию из списка и нажимаю на нее, приложение вылетает, давая мне Исключение нулевого указателя. Я знаю, что это такое, но не могу понять, почему. Вот мой код:

@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();

}

Исправьте меня, если я ошибаюсь, но потому что я перезагружаю данные в адаптер списка и нажимаю на них, не должно ли это имитировать поведение элемента в списке, если он только что был загружен?

Я в замешательстве .. Есть слова?

Приветствия

1 Ответ

1 голос
/ 03 апреля 2012

Судя по вашему комментарию, кажется, что переменная data равна нулю, и поэтому data [position] выдает исключение. Предположительно это данные, относящиеся к положению адаптера, но не то, что загружается в ваш onCreate ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...