Попытка вызвать виртуальный метод 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' на ссылку нулевого объекта
Мне необходимо реализовать справочник для редких животных. При нажатии на фрагмент меню, что бы выходил перечень этих животных и при нажатии на само животное его описание. Делаю так скажем многоплановое приложение и разметка content_main.xml у меня уже занята под другие цели. Поэтому я создала разметку content_main_2.xml в нее вложила listView и отдельно сделала разметку для экземпляра списка, далее с помощью адаптера хотела его наполнять.
MainActivity
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private ListView list;
private String[] NameArray;
private CustomArrayAdapter adapterlist;
private int categoty_index;
private int position;
private int[] array_image_category = new int []{R.drawable.bla, R.drawable.bla, R.drawable.bla};
private int [] array_image_animal = {R.drawable.bla, R.drawable.bla, R.drawable.bla};
private List<ListItemClass> listItemMain;
private ListItemClass listItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = findViewById(R.id.fab);
list = findViewById(R.id.listView); //Показывает списки на экране
listItemMain = new ArrayList<>();
NameArray = getResources().getStringArray(R.array.category_array);
for(int i = 0; i < NameArray.length; i++)//Цикл длится по длине массива(количества в array)
{
listItem = new ListItemClass();
listItem.setNameE(NameArray[i]); //Берем элемент из array и передаем в listitem
listItem.setImage_id(array_image_category[i]);
listItemMain.add(listItem);
}
adapterlist = new CustomArrayAdapter(this, R.layout.example_layout, listItemMain, getLayoutInflater());
list.setAdapter(adapterlist);
NavigationView nav_view = findViewById(R.id.nav_view);
drawerLayout = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
nav_view.setNavigationItemSelectedListener(this);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(position == 0)
{
}
}
});
В логах ошибка:
Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
Я так понимаю это как раз из за разметки, как в таком случае быть?
Ответы (1 шт):
Пишете что создали разметку content_main_2.xml и в нее вложили listView
А сами в метод setContentView передаете activity_main
Замените
setContentView(R.layout.activity_main);
на
setContentView(R.layout.content_main_2);