我有三个页面Splash_Activity,Login_Activity,Activity_One
活动流程为Splash_Activity - > Login_Activity - > Activity_One。在这种情况下,我检查.db文件是否存在于我的Splash_Activity中,这始终是应用程序的启动活动。
我为if .db存在条件,然后转到Activity_One 如果没有,请转到Login_Activity。
但是当我删除按钮上的.db文件时,单击.db文件的问题会被正确删除并显示登录页面。
当我存在没有登录的应用程序时,我再次启动应用程序前两次运行并检查.db文件不可用然后转到登录页面但之后转到Activity_One。为什么会这样?
此启动画面
public class Splash_Screen extends RootActivity
{
MyDbHelper dbhelper ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.splash_page);
Thread loading = new Thread() {
public void run()
{
try
{
File database=getApplicationContext().getDatabasePath("ClassNKK.db");
if (!database.exists()) {
// Database does not exist so copy it from assets here
Log.i("Database", "Not Found");
try
{
sleep(2000);
Intent main = new Intent(Splash_Screen.this, Login_Screen.class);
startActivity(main);
Log.e("DB "," is null !!!");
}
catch (Exception e) {
e.printStackTrace();
}
}
else {
Log.i("Database", "Found");
try {
sleep(2000);
Intent main = new Intent(Splash_Screen.this, AllPosts_Page.class);
startActivity(main);
Log.e("DB ", " is null !!!");
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (SQLiteException e) {
e.printStackTrace();
}
}
};
loading.start();
}
}
这是Activity_One页面上的注销按钮
imgBtn_LogOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
File database = getApplicationContext().getDatabasePath(dbhelper.DATABASE_NAME);
if (!database.exists()) {
Log.e("Database", "Not Found");
} else {
Log.e("Database", "Found");
ctx.deleteDatabase(dbhelper.DATABASE_NAME);
Log.e("Database", " Deleted Completeley !!!");
File dir = new File(Environment.getExternalStorageDirectory() + "classnkk_images");
DeleteRecursive(dir);
Intent i = new Intent(Filter_Screen.this, Login_Screen.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
finish();
}
}
});
答案 0 :(得分:0)
我认为问题是当你在删除db之后启动应用程序时,它会自动创建没有数据的新数据库。
那么请再次检查数据库是否已创建?
我建议您将参数保存在共享首选项中,并在启动画面中进行检查。它更好!
答案 1 :(得分:0)
如果要存储登录凭据,可以使用sharedPreference而不是sqlite。我认为这将是最合适的方法。
http://androidforbegineers.blogspot.in/2013/08/shared-preference-using-registration.html
此博客将为您提供帮助。:)