Android应用程序SQlite Access

时间:2014-05-27 13:44:37

标签: android sqlite nullpointerexception

从活动中访问SQl​​ite DB可以正常工作 例如

    public class MainActivity extends Activity {

     DatabaseHelper db;
     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        db = new DatabaseHelper(getApplicationContext());

        // Creating tags
        Tag tag1 = new Tag("Shopping");
        Tag tag2 = new Tag("Important");
        Tag tag3 = new Tag("Watchlist");
        Tag tag4 = new Tag("Androidhive");

        // Inserting tags in db
        long tag1_id = db.createTag(tag1);
        long tag2_id = db.createTag(tag2);
        long tag3_id = db.createTag(tag3);
        long tag4_id = db.createTag(tag4);

        Log.d("Tag Count", "Tag Count: " + db.getAllTags().size());
        setContentView(R.layout.activity_main);
                if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new        PlaceholderFragment()).commit();
        }
    }

但是只要我在Activity中获取DB代码并在Application Constructor中调用它,我就会得到空指针。 例如

public class MainClass extends Application {
// Database Helper
private DatabaseHelper db;
private static final String LOG = MainClass.class.getName();

public MainClass()  {
    Log.d(LOG, "MainClass Init");
    db = new DatabaseHelper(getApplicationContext());

我错过了什么?

1 个答案:

答案 0 :(得分:3)

应用程序类不需要显式构造函数。

在调用构造函数的对象实例化阶段,Application尚未设置为ContextgetApplicationContext()无法工作。

您只能在Application或更高版本中将Context用作onCreate()