Передача ArrayList<> из Activity
Передаю ArrayList из MainActivity
public class MainActivity extends AppCompatActivity {
public static final String INFO_ACTIVITY = "activity.info";
ArrayList<String> countriesArrayList = new ArrayList<>();
ArrayList<String> checkedCountries = new ArrayList<>();
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initializeCountries();
listView = findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, countriesArrayList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
SparseBooleanArray booleanArray = listView.getCheckedItemPositions();
for (int i = 0; i < countriesArrayList.size(); i++) {
if (booleanArray.get(i)) {
checkedCountries.add(countriesArrayList.get(i));
}
}
}
});
}
private void initializeCountries() {
countriesArrayList.add("Argentina");
countriesArrayList.add("Brazil");
countriesArrayList.add("Sweden");
countriesArrayList.add("Japan");
}
public void onShow(View view) {
Intent intent = new Intent(INFO_ACTIVITY);
intent.putExtra("countries", checkedCountries);
startActivity(intent);
}
}
Принимаю ArrayList в CountryInfoActivity
public class CountryInfoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_country_info);
LinearLayout linearLayout = findViewById(R.id.linearLayout);
ArrayList<String> chosenCountries = getIntent().getStringArrayListExtra("countries");
assert chosenCountries != null;
for (String country : chosenCountries) {
TextView textView = new TextView(this);
switch (country) {
case "Argentina":
textView.setText(R.string.argentinaInfo);
break;
case "Brazil":
textView.setText(R.string.brazilInfo);
break;
case "Sweden":
textView.setText(R.string.swedenInfo);
break;
case "Japan":
textView.setText(R.string.japanInfo);
break;
}
linearLayout.addView(textView);
}
}
}
Выдает ошибку NullPointerException во второй Activity в методе getStringArrayListExtra() Где я ошибся?
Ответы (1 шт):
Автор решения: Constantine Kim
→ Ссылка
Странно, но замена putExtra() на putStringArrayListExtra () помогло..