2017-04-24 42 views
0

我的應用程序中有一個啓動畫面,我正在檢查我的數據庫的表是否存在,如果沒有,請創建我的應用程序需要的表。我的想法是讓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); 
} 

} 

回答

1

爲什麼要是否存在檢查DB與否,因爲一旦當你創建你的對象AppSQLiteHelper ..它會自動調用onCreate()的重寫函數來初始化數據庫,你不必明確檢查它是否存在。如果你真的想這樣做,儘管有上述條件,那麼你可以創建一個callb ACK界面和您的輔助類和你的OnCreate執行後,你可以實現檢查其是否創建低於db.Like ..

public interface OnDBInitializeListener { 
    public void onCreateCalled(int position); 
} 

並使用此當你通過傳遞這對constructor..Hope叫助手類這有助於

+0

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

+0

我有點失去了,是一個學校的最終項目,我需要社區幫助改善代碼 – Eduardo