2017-01-13 9 views
0

Я пытаюсь получить arraylist в ScanLocate деятельности от UpdateLocation деятельности.Почему я получаю исключение нулевого указателя при передаче ArrayList строк из одной активности в другую?

Я использую startActivityForResult метод для вызова scan метода, который заполняющий ArrayList wifiList, я тогда хочу отправить ArrayList в Update Location класса.

я начала позвонив по телефону startActivityForResult в Update Location:

private void getScan(){ 
    //Create an intent to start ScanLocate 
    final Intent i = new Intent(this, ScanLocate.class); 
    //Start scanLocate with request code 
    startActivityForResult(i, REQUEST_READINGS); 
} 

Далее, в ScanLocate я создал sendData метод (примечание: проверка подтверждает, что данные ArrayList нетронутыми в этой точке):

private void sendData(){ 
    //create a new intent as container for the result 
    final Intent readings = new Intent(this, UpdateLocation.class); 

    //check that data is in wifiList 
    for(String s:wifiList){ 
     Log.v(TAG,"List Items: " + s); 
    } 

    //create bundle for string array 
    Bundle b = new Bundle(); 
    b.putStringArrayList(key, wifiList); 

    //add readings to send to updateLoc 
    readings.putExtras(b); 

    //set code to indicate success and attach Intent 
    setResult(RESULT_OK, readings); 

    //call finish to return 
    finish(); 
} 

Последняя часть находится в UpdateLocation с onActivityResult:

@Override 
     public void onActivityResult(int requestCode, int resultCode, Intent readings){ 
    super.onActivityResult(requestCode, resultCode, readings); 

    //check if request code matches the one set above 
    if(requestCode == REQUEST_READINGS){ 

     //check if sendData() in ScanLocate was successful 
     if(resultCode == RESULT_OK){ 
      //get the readings from the Intent 
      Log.v(TAG, "HERE"); 
      result = getIntent().getExtras().getStringArrayList(ScanLocate.key); 
      Log.v(TAG, "HERE2"); 

      for(String s : result) { 
       Log.v(TAG, "Location 5: " + s); 
      } 
     }else{ 
      //ScanLocate was unsuccessful 
     } 
    } 
} 

Отображается первое "Here", но затем оно падает на следующей строке, getStringArrayList() выбрасывает исключение нулевого указателя.

Я просмотрел документацию и по предыдущим вопросам здесь, и я не вижу, что происходит не так.

Любой совет будет оценен, спасибо.

Предыдущие вопросы:

startactivityforResult not working

How to pass an ArrayList to the StartActivityForResult activity

+0

Возможно, вы отладки это с инструмент отладчика? – AxelH

+0

Вы можете использовать 'readings.putStringArrayList (key, wifiList),' no need for bundle. – Gudin

+0

'Намерения чтения'. Не используйте 'getIntent()', а 'readings'. – greenapps

ответ

2

Вам не нужно звонить getIntent(), используйте параметр предоставленный метод:

result = readings.getStringArrayListExtra(ScanLocate.key);