Android 安卓:如何启动两项活动

Android 安卓:如何启动两项活动,android,Android,我有三个页面:启动活动、登录活动、活动一 活动流是Splash\u activity->Login\u activity->activity\u One。在这种情况下,我检查Splash\u activity中是否存在.db文件,它始终是应用程序的启动活动 我设置了if.db存在的条件,然后转到活动1 如果没有,则转到登录活动。 但问题是当我在按钮上删除.db文件时,单击.db文件会正确删除并显示登录页面 当我在没有登录的情况下存在应用程序时,我再次启动应用程序,先运行两次,然后检查.db文件是

我有三个页面:启动活动、登录活动、活动一

活动流是Splash\u activity->Login\u activity->activity\u One。在这种情况下,我检查Splash\u activity中是否存在.db文件,它始终是应用程序的启动活动

我设置了if.db存在的条件,然后转到活动1 如果没有,则转到登录活动。

但问题是当我在按钮上删除.db文件时,单击.db文件会正确删除并显示登录页面

当我在没有登录的情况下存在应用程序时,我再次启动应用程序,先运行两次,然后检查.db文件是否不可用,然后转到登录页面,然后转到活动1。为什么会这样

这个闪屏

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();
    }

} 
这个注销按钮在活动的一页上

 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();
                }
            }
        });

我认为问题是当你在删除数据库后启动应用程序时,它会自动创建一个没有数据的新数据库

所以,请再次检查数据库是否已创建


我建议您将参数保存在共享优先权中,并在启动屏幕中进行检查。更好

如果要存储登录凭据,可以使用SharedReference而不是sqlite。我认为这将是最合适的方法


此博客将帮助您。:)

当您按下注销按钮时,您的logcat输出是什么???它是否输出“Log.e(“数据库”,“已找到”);”和“Log.e(“数据库”,“已完全删除!!!””);“Log.e(“数据库”,“已完全删除!!!””)”;"