Android:如何启动两项活动

时间:2015-11-13 05:26:59

标签: android

我有三个页面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();
                }
            }
        });

2 个答案:

答案 0 :(得分:0)

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

那么请再次检查数据库是否已创建?

我建议您将参数保存在共享首选项中,并在启动画面中进行检查。它更好!

答案 1 :(得分:0)

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

http://androidforbegineers.blogspot.in/2013/08/shared-preference-using-registration.html

此博客将为您提供帮助。:)