如何让这两个Activity中使用的是同一个DatabaseHelper对象
时间: 2024-03-12 20:46:43 浏览: 51
要让这两个 Activity 中使用的是同一个 DatabaseHelper 对象,可以将这个对象放到 Application 类中,并在需要使用它的 Activity 中获取它。
1. 创建一个 MyApplication 类,继承自 Application 类,并在其中创建一个 DatabaseHelper 对象。
```
public class MyApplication extends Application {
private DatabaseHelper dbHelper;
@Override
public void onCreate() {
super.onCreate();
dbHelper = new DatabaseHelper(this);
}
public DatabaseHelper getDbHelper() {
return dbHelper;
}
}
```
2. 在 AndroidManifest.xml 文件中声明 MyApplication 类。
```
<application
android:name=".MyApplication"
…>
…
</application>
```
3. 在需要使用 DatabaseHelper 的 Activity 中,通过 getApplication() 方法获取 MyApplication 对象,再从中获取 DatabaseHelper 对象。
```
public class MainActivity extends AppCompatActivity {
private SQLiteDatabase db;
private DatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyApplication myApp = (MyApplication) getApplication();
dbHelper = myApp.getDbHelper();
db = dbHelper.getWritableDatabase();
// 访问数据库表
}
@Override
protected void onDestroy() {
super.onDestroy();
db.close();
}
}
```
4. 在另一个 Activity 中同样获取 MyApplication 对象,从中获取 DatabaseHelper 对象,并访问数据库表。
```
public class AnotherActivity extends AppCompatActivity {
private SQLiteDatabase db;
private DatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
MyApplication myApp = (MyApplication) getApplication();
dbHelper = myApp.getDbHelper();
db = dbHelper.getWritableDatabase();
// 访问数据库表
}
@Override
protected void onDestroy() {
super.onDestroy();
db.close();
}
}
```
通过这种方式,两个 Activity 中使用的是同一个 DatabaseHelper 对象,可以访问同一个数据库表,并且避免了创建多个 DatabaseHelper 对象的开销。
阅读全文