마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 리스트뷰 에러 봐주셨으면...

0 추천

바텀 내비게이션바에 프레그먼트로 화면전환 만들었습니다. 

그런데 리스트뷰를 넣어서 세팅해봤는데 에러가 발생합니다.

어떻게 해야하나요?

밑에 코드랑 로그캣 첨부했습니다.

package com.example.hs.meet;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class BottomNavigation extends AppCompatActivity {


    private BottomNavigationView navigation;
    private ViewPager viewPager;
    private ViewPagerAdapter adapter;
    private MenuItem prevMenuItem;

    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navigation_home:
                    viewPager.setCurrentItem(0);
                    return true;
                case R.id.navigation_dashboard:
                    viewPager.setCurrentItem(1);
                    return true;
                case R.id.navigation_notifications:
                    viewPager.setCurrentItem(2);
                    return true;
                case R.id.navigation_mypage:
                    viewPager.setCurrentItem(3);
                    return true;

            }
            return false;
        }
    };




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        viewPager = (ViewPager) findViewById(R.id.viewpager_id);
        navigation = (BottomNavigationView) findViewById(R.id.bottom_navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

        adapter = new ViewPagerAdapter(getSupportFragmentManager());

        adapter.AddFragment(new Fragment1(), "frag1");
        adapter.AddFragment(new Fragment2(),"frag2");
        adapter.AddFragment(new Fragment3(), "frag3");
        adapter.AddFragment(new Fragment4(), "frag3");

        viewPager.setAdapter(adapter);

        String[] fillterListItem = getResources().getStringArray(R.array.fillterListItem);

        ArrayAdapter fillterAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,fillterListItem);

        ListView fillterList = findViewById(R.id.fillter_List);


        fillterList.setAdapter(fillterAdapter);




        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                if (prevMenuItem != null) {
                    prevMenuItem.setChecked(false);
                }
                else
                {
                    navigation.getMenu().getItem(0).setChecked(false);
                }

                navigation.getMenu().getItem(position).setChecked(true);
                prevMenuItem = navigation.getMenu().getItem(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

    }



}

09-09 04:26:28.802 31491-31491/? E/Zygote: v2
09-09 04:26:28.812 31491-31491/? E/SELinux: [DEBUG] get_category: variable seinfo: default sensitivity: NULL, cateogry: NULL
09-09 04:26:29.792 31491-31491/com.example.hs.meet E/com.example.hs.meet: listview is null!
09-09 04:26:29.792 31491-31491/com.example.hs.meet E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.hs.meet, PID: 31491
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hs.meet/com.example.hs.meet.BottomNavigation}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2699)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2773)
        at android.app.ActivityThread.access$900(ActivityThread.java:177)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1434)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5930)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
        at com.example.hs.meet.BottomNavigation.onCreate(BottomNavigation.java:77)

        at android.app.Activity.performCreate(Activity.java:6178)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2652)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2773) 
        at android.app.ActivityThread.access$900(ActivityThread.java:177) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1434) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5930) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 

 

익명사용자 님이 2018년 9월 9일 질문

1개의 답변

0 추천
에러 메시지 대로 BottomNavigation.java:77 에서

아마도 아래 코드 인 것 같네요.

fillterList.setAdapter(fillterAdapter);

filterAdapter가 Null 이라는 겁니다.

해당 line 몇 줄 앞에서 Break point을 잡아서, 원하는대로 데이터가 넘어가는지 확인해 보세요.
Will Kim (43,170 포인트) 님이 2018년 9월 10일 답변
Log.i(getPackageName(), fillterAdapter != null ? "listview is not null!" : "listview is null!"); 로 해봤습니다
로그캣에 null이 아니라 찍히네요
...