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

cursorAdapter를 fragment에서 사용했을때 원래 오류가 나나요?

0 추천

제가 AppcompactActivity 에서는 성공한 소스를 그대로 가져왔어요! 성공한 소스는 커스텀 리스트뷰인데 cursorAdapter를 통해 Db에있는 내용을 가져오는건데요! 근데 이번엔 mainActivity 안에 있는 2개의 탭 그러니까 하나의 fragment에서 사용해야돼서 똑같이 복사해왔는데... 오류가 나는데 오류메세지는 

1-08 01:15:10.966 15140-15140/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                   Process: com.example.je.activitytest1015, PID: 15140
                                                   java.lang.NullPointerException
                                                       at com.example.je.activitytest1015.Tabs1.selectDB(Tabs1.java:78)
                                                       at com.example.je.activitytest1015.Tabs1.onCreateView(Tabs1.java:60)

뭐가 잘못된걸까요..?앱이 아예 꺼져버리네요 ㅠㅠㅠ 고수님들 제발 도와주세요!!ㅠㅠㅠ

Tabs1.java

public class Tabs1 extends android.support.v4.app.Fragment {
    PopupMenu popupMenu;
    SQLiteDatabase sqlitedb;
    DBManager dbmanager;
    Cursor cursor;
    private ListView mListView = null;
    String sql;
    DBAdapter1 dbAdapter1;


    public Tabs1() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        View view = inflater.inflate(R.layout.activity_tab1, container, false);
        // Inflate the layout for this fragment

       mListView = (ListView) getActivity().findViewById(R.id.list);
        dbAdapter1 = new DBAdapter1(getActivity(), cursor);
        dbmanager = new DBManager(getActivity());

        selectDB();

        return view;
    }
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.menu_main, menu);
    }

    private void selectDB(){
        sqlitedb = dbmanager.getWritableDatabase();
        sql = "SELECT * FROM license;";

        cursor = sqlitedb.rawQuery(sql, null);
        if(cursor.getCount() > 0){
            getActivity().startManagingCursor(cursor);
            DBAdapter1 dbAdapter = new DBAdapter1(getActivity(), cursor);
            mListView.setAdapter(dbAdapter);
        }
    }//이하 생략
그리고 MainActivity.java 에서는 tabs1.java를 이런식으로 호출합니다
@Override
public Fragment getItem(int position) {
    // getItem is called to instantiate the fragment for the given page.
    // Return a DummySectionFragment (defined as a static inner class
    // below) with the page number as its lone argument.
    switch(position) {
        case 0:
            Tabs1=new Tabs1();
            return Tabs1;
        case 1:
            Tabs2=new Tabs2();
            return Tabs2;

    }
    return null;
}
뚜루루루둡 (1,130 포인트) 님이 2016년 11월 8일 질문

1개의 답변

0 추천
 
채택된 답변

listiview 를 가져오는 부분이 잘못되어 있네요 

View view = inflater.inflate(R.layout.activity_tab1, container, false);
// Inflate the layout for this fragment

mListView = (ListView) view.findViewById(R.id.list);

aucd29 (218,390 포인트) 님이 2016년 11월 8일 답변
뚜루루루둡님이 2016년 11월 8일 채택됨
와..aucd29님 어느방향에 계세요? 그쪽으로 절하겠습니다!!ㅠㅠㅠ정말
감사드려요!!! 이거때문에 코드 다 갈아엎어야하나 했는데 ㅠㅠㅠㅠ 정말 감사드립니다 !! 좋은일 있으실거예요!!!:)
...