从活动中访问SQlite 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());
我错过了什么?
答案 0 :(得分:3)
应用程序类不需要显式构造函数。
在调用构造函数的对象实例化阶段,Application
尚未设置为Context
。 getApplicationContext()
无法工作。
您只能在Application
或更高版本中将Context
用作onCreate()
。