Problem z listview/sqlite?

0

Dobry Panie/Pany,
próbuję zapisywać dane w SQLite andka w pierwszej wersji coś popier.... w klasach z bazą i nie mogłem dojść co i gdzie. W końcu zerżnąłem kod z:

https://www.journaldev.com/9438/android-sqlite-database-example-tutorial

i dalej lipa tym razem przy użyciu listview wywala apkę

kod fragmentu:

public class Help extends Fragment {

    private DBManager dbManager;

    private ListView listView;

    private SimpleCursorAdapter adapter;

    final String[] from = new String[]{DatabaseHelper._ID,
            DatabaseHelper.SUBJECT, DatabaseHelper.DESC};

    final int[] to = new int[]{R.id.id, R.id.title, R.id.desc};

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

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

        ((MainActivity) getActivity()).getSupportActionBar().setTitle(R.string.title_activity_help);

        dbManager = new DBManager(this.getActivity());
        dbManager.open();
        Cursor cursor = dbManager.fetch();

        listView = (ListView) getActivity().findViewById(R.id.list_view);

        ///jak od tego miejsca zakomentuję nie wywala apki

        listView.setEmptyView(getActivity().findViewById(R.id.empty));

        adapter = new SimpleCursorAdapter(getActivity(), R.layout.activity_view_record, cursor, from, to, 0);
       // adapter.notifyDataSetChanged();

        listView.setAdapter(adapter);

        // OnCLickListiner For List Items
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long viewId) {
                TextView idTextView = (TextView) view.findViewById(R.id.id);
                TextView titleTextView = (TextView) view.findViewById(R.id.title);
                TextView descTextView = (TextView) view.findViewById(R.id.desc);

                String id = idTextView.getText().toString();
                String title = titleTextView.getText().toString();
                String desc = descTextView.getText().toString();

                Intent modify_intent = new Intent(getActivity(), ModifyContryActivity.class);
                modify_intent.putExtra("title", title);
                modify_intent.putExtra("desc", desc);
                modify_intent.putExtra("id", id);

                startActivity(modify_intent);
            }
        });

        return view;
    }

coś pomieszałem przy przejściu z activa na fragment czy dalej błąd leży po stronie klas bazy?

edit;

sorki zapomniałem wrzucić loga

wywala:

    Process: xxx.fly_control, PID: 29732
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setEmptyView(android.view.View)' on a null object reference
        at xxx.fly_control.fragments.Help.onCreateView(Help.java:54)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428)
        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1827)
        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383)
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2245)
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:703)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:211)
        at android.app.ActivityThread.main(ActivityThread.java:5389)
        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:1020)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)

1

zle wykonujesz akcje w poszcegolnych cyklach zycia fragmentu.
w onCreateView jedyne co to zrob return view po inflacji.

dopiero wtedy android utworzy/zainicjalizuje layout.

reszte logiki wklej do metody onViewCreated

tutaj masz pomoc:
https://guides.codepath.com/android/creating-and-using-fragments

0

dzięki, muszę poczytać trochę o podstawach (choć i tak zapewne nie wezmę byśera do ręki:))
średnio co rok/półtora zmieniam język i wiem, że bez podstaw ciężko cokolwiek wystukać ale i tak zawsze męczę wklepując w gugla jak to będzie po np. javowskiemu

1 użytkowników online, w tym zalogowanych: 0, gości: 1