0

私の活動では、4つのフラグメントがあります。それらの1つは、データベースに接続してそのデータを取得する必要があります。ただし、アプリケーションを実行するとエラーが発生し、logcatに次のように表示されます。

07-19 02:09:01.011: E/AndroidRuntime(229):  Uncaught handler: thread main exiting due to uncaught exception
07-19 02:09:01.031: E/AndroidRuntime(229):  java.lang.ExceptionInInitializerError
07-19 02:09:01.031: E/AndroidRuntime(229):  at com.astro.database.DatabaseHandler.<init>(DatabaseHandler.java:26)
07-19 02:09:01.031: E/AndroidRuntime(229):  at com.astro.fragments.TopRecipesFragment.onActivityCreated(TopRecipesFragment.java:96)
07-19 02:09:01.031: E/AndroidRuntime(229):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:892)
07-19 02:09:01.031: E/AndroidRuntime(229):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)
07-19 02:09:01.031: E/AndroidRuntime(229):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
.
.
.

私のフラグメントのコードは次のようなものです。

public class TopRecipesFragment extends Fragment {

    private Context context;
    private DatabaseHandler dbHandler;

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

        View view = inflater.inflate(R.layout.template_toprecipes, container, false);
        context = getActivity().getApplicationContext();

        Log.i(TAG, "View created.");

        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Log.i(TAG, "inside onActivityCreated()");

        dbHandler = new DatabaseHandler(context);

    }

    .
    .
    .

}

次に、DatabaseHandlerクラス:

public class DatabaseHandler {

    private DatabaseHelper dbHelper;
    private SQLiteDatabase database;

    public DatabaseHandler(Context context) {
        dbHelper = new DatabaseHelper(context); // Error happens here
    }

    public void open() throws SQLException {
        database = dbHelper.getWritableDatabase();
    }

    public void close() {
        dbHelper.close();
    }

    .
    .
    .
}

そして最後に、DatabaseHelperクラス:

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "db";   
    private static final String COLUMN_ID     = "_id";
    private static final int DATABASE_VERSION = 1;

    public DatabaseHelper(Context context) {

        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    .
    .
    .
}

なぜそれが起こるのか分かりません。任意の提案をいただければ幸いです。ありがとう

4

1 に答える 1

2

contextフラグメントのフィールドはどこから来たのですか? 私の推測では、おそらくそうnullであり、これが例外を引き起こしています。を使ってみてくださいdbHandler = new DatabaseHandler(getActivity())。(アクティビティは当然 a ですContext)

于 2012-07-19T04:05:22.160 に答える