2

次のようにフラグメントにsqliteデータをロードできない問題が発生しています

public class ListFragment extends Fragment {

    DatabaseUtil dbUtil = new DatabaseUtil(this.getActivity());
    private ArrayList <HashMap<String, Object>> getNews;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        final View v = inflater.inflate(R.layout.activity_list, container, false);


        new LoadNewsLists().execute("");        

        return v;
    }

これがsqliteからのデータのロードです

Cursor cursor = dbUtil.fetchAllData(arg[0]);

次のエラーが発生しました。

03-08 12:21:52.900: E/AndroidRuntime(25895): Caused by: java.lang.NullPointerException
03-08 12:21:52.900: E/AndroidRuntime(25895):    at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
4

2 に答える 2

3

db オブジェクトを定義すると同時に初期化することはできません。初期化コードをonCreateView()callbackに移動する必要があります。

DatabaseUtil dbUtil ;
private ArrayList <HashMap<String, Object>> getNews;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final View v = inflater.inflate(R.layout.activity_list, container, false);

    dbUtil = new DatabaseUtil(getActivity());
    new LoadNewsLists().execute("");        

    return v;
}
于 2013-03-08T06:44:57.337 に答える
1

コンストラクター内で何が起こっているのかわかりませんが、コールバックDatabaseUtil(this.getActivity())に到達するまでアクティビティが完全に初期化されることに依存しないでください。Fragment.onActivityCreated()

于 2013-03-08T07:01:20.757 に答える