How I create a DataBase in the SPLASH SCREEN?
Reason's:
I create a code who validate if my Table's and the Database exists, but this code CRASH when I try to read an inexistence Database (then, the app is closed), because I dont have a method to create.
I need create a database and Table "Users" if not exists (this is the case).
When the database exists and the table exists this app works very nice...
public class SplashScreenActivity extends Activity {
// Set the duration of the splash screen
private static final long SPLASH_SCREEN_DELAY = 2000;
final Context context = this;
UsersDataBaseAdapter loginDataBaseAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
loginDataBaseAdapter=new UsersDataBaseAdapter(this);
loginDataBaseAdapter=loginDataBaseAdapter.open();
// Set portrait orientation
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// Hide title bar
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.splash_screen);
TimerTask task = new TimerTask() {
@Override
public void run() {
loginDataBaseAdapter=loginDataBaseAdapter.open();
File dbtest =new File("/data/data/http://ift.tt/1HxUlpx");
if(dbtest.exists())
{
boolean dbtest1 = UsersDataBaseAdapter.databaseExist();
if (dbtest1==true){
Integer dbtest2= UsersDataBaseAdapter.ExisteTabla();
if (dbtest2==0 ){
Intent mainIntent = new Intent().setClass(SplashScreenActivity.this, HomeActivity.class);
startActivity(mainIntent);
}else{
Intent mainIntent = new Intent().setClass(SplashScreenActivity.this, HomeActivity.class);
startActivity(mainIntent);
}
}else{
Intent mainIntent = new Intent().setClass(SplashScreenActivity.this, HomeActivity.class);
startActivity(mainIntent);
}
}else{
Intent mainIntent = new Intent().setClass(SplashScreenActivity.this, HomeActivity.class);
startActivity(mainIntent);
}
// Close the activity so the user won't able to go back this
// activity pressing Back button
finish();
}
};
// Simulate a long loading process on application startup.
Timer timer = new Timer();
timer.schedule(task, SPLASH_SCREEN_DELAY);
}
}
Error message in Log
03-11 00:22:09.971: E/Trace(4411): error opening trace file: No such file or directory (2)
03-11 00:22:27.839: D/AndroidRuntime(4411): Shutting down VM
03-11 00:22:28.069: W/dalvikvm(4411): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
03-11 00:22:28.281: E/AndroidRuntime(4411): FATAL EXCEPTION: main
03-11 00:22:28.281: E/AndroidRuntime(4411): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.exemplozxingintegration/com.example.skysoft.qr.SplashScreenActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.os.Handler.dispatchMessage(Handler.java:99)
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.os.Looper.loop(Looper.java:137)
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.app.ActivityThread.main(ActivityThread.java:5041)
03-11 00:22:28.281: E/AndroidRuntime(4411): at java.lang.reflect.Method.invokeNative(Native Method)
03-11 00:22:28.281: E/AndroidRuntime(4411): at java.lang.reflect.Method.invoke(Method.java:511)
03-11 00:22:28.281: E/AndroidRuntime(4411): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-11 00:22:28.281: E/AndroidRuntime(4411): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-11 00:22:28.281: E/AndroidRuntime(4411): at dalvik.system.NativeStart.main(Native Method)
03-11 00:22:28.281: E/AndroidRuntime(4411): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:424)
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
03-11 00:22:28.281: E/AndroidRuntime(4411): at com.example.skysoft.qr.UsersDataBaseAdapter.<init>(UsersDataBaseAdapter.java:56)
03-11 00:22:28.281: E/AndroidRuntime(4411): at com.example.skysoft.qr.SplashScreenActivity.onCreate(SplashScreenActivity.java:28)
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.app.Activity.performCreate(Activity.java:5104)
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
03-11 00:22:28.281: E/AndroidRuntime(4411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
03-11 00:22:28.281: E/AndroidRuntime(4411): ... 11 more
My idea, is JUST CREATE the Database in the Splash Screen
Aucun commentaire:
Enregistrer un commentaire