在Android的初始屏幕上创建数据库
问题描述:
我的应用程序中有一个启动画面,我正在检查我的数据库的表是否存在,如果没有,请创建我的应用程序需要的表。我的想法是让2次的检查,像这样:在Android的初始屏幕上创建数据库
if(db.exists){
increase the progressbar to the 100%
(If we could add a short pause to the progress bar transition better, just
for a better user experience)}
else{
increase the progress bar to 50% and create databases. By last increase
progress bar to 100%}
start -> main_activity
这只是我有这个想法,但我不知道如何构建和我不如何引用AppSQLiteHelper.java的方法。如果你们中的任何人有更好的想法来更好地改进代码逻辑。下面是写,直到此刻代码:
SplashScreenActivity.java:
public class SplashScreenActivity extends Activity {
// Set the duration of the splash screen
public ProgressBar splash_screenProgressBar;
public int MAX_VALUE = 30;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set portrait orientation
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.splash_screen);
splash_screenProgressBar = (ProgressBar) findViewById(R.id.splash_screenProgressBar);
splash_screenProgressBar.setMax(MAX_VALUE);
new CountDownTimer(3000, 100) {
int progreso = 1; // Variable que va a ir aumentando del progreso
@Override
public void onTick(long millisUntilFinished) {
splash_screenProgressBar.setProgress(progreso);
progreso += (1);
}
@Override
public void onFinish() {
splash_screenProgressBar.setProgress(MAX_VALUE);
// Start the next activity
Intent mainIntent = new Intent().setClass(SplashScreenActivity.this, MainActivity.class);
startActivity(mainIntent);
// Close the activity so the user won't able to go back this activity pressing Back button
finish();
}
}.start();
}
}
AppSQLiteHelper.java:
public class AppSQLiteHelper extends SQLiteOpenHelper{
String sqlCreateCartera = "CREATE TABLE CARTERA (saldo INTEGER)";
String sqlCreateValor = "CREATE TABLE VALOR (cantidad INTEGER, precio_accion INTEGER, entidad TEXT)";
String sqlCreateEstado = "CREATE TABLE ESTADO (estado BOOLEAN)";
public AppSQLiteHelper(Context contexto, String nombre,
CursorFactory factory, int version) {
super(contexto, nombre, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sqlCreateCartera);
db.execSQL(sqlCreateValor);
db.execSQL(sqlCreateEstado);
}
@Override
public void onUpgrade(SQLiteDatabase db, int versionAnterior, int versionNueva) {
db.execSQL("DROP TABLE IF EXISTS CARTERA");
db.execSQL("DROP TABLE IF EXISTS VALOR");
db.execSQL("DROP TABLE IF EXISTS ESTADO");
db.execSQL(sqlCreateCartera);
db.execSQL(sqlCreateValor);
db.execSQL(sqlCreateEstado);
}
}
答
为什么要是否存在检查DB与否,因为一旦当你创建你的对象AppSQLiteHelper
..它会自动调用onCreate()
的重写函数来初始化数据库,你不必明确检查它是否存在。如果你真的想这样做,尽管有上述条件,那么你可以创建一个callb ACK界面和您的辅助类和你的OnCreate执行后,你可以实现检查其是否创建低于db.Like ..
public interface OnDBInitializeListener {
public void onCreateCalled(int position);
}
并使用此当你通过传递这对constructor..Hope叫助手类这有助于
bfff现在你不知道如何使你告诉我。 Mi的想法是在启动画面中替换模拟加载时间的splash_screen.java的onTick方法,并替换为我在帖子中写入的两个条件。如果数据库存在{set progress bar = 100%并执行main_activity.java} else if db exists = null {调用AppSQLiteHelper.java的onCreate方法设置进度条为100%并启动main_activity.java} – Eduardo
我有点失去了,是一个学校的最终项目,我需要社区帮助改善代码 – Eduardo