Я пытаюсь получить 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
Возможно, вы отладки это с инструмент отладчика? – AxelH
Вы можете использовать 'readings.putStringArrayList (key, wifiList),' no need for bundle. – Gudin
'Намерения чтения'. Не используйте 'getIntent()', а 'readings'. – greenapps