Попытка вызвать виртуальный метод '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 шт):

Автор решения: Circassian

Пишете что создали разметку content_main_2.xml и в нее вложили listView А сами в метод setContentView передаете activity_main

Замените

setContentView(R.layout.activity_main);

на

setContentView(R.layout.content_main_2);
→ Ссылка