Android Backpress

时间:2014-10-11 08:39:27

标签: android android-activity splash-screen

我在Android应用中有5个活动。 活动A =飞溅 活动B和活动C =获取一些用户数据 活动D和活动E根据活动B和C中给出的用户信息显示一些计算值。 第一次启动我的应用程序后,活动B和C将不再显示给用户。所以用户只能插入一次他的信息。 (这是我使用共享偏好完成的) 现在我想要的是,如果用户按下活动D和E的后退按钮,每当他启动应用程序时,Splash屏幕就会出现,并将他直接带到活动D和E.从不活动B和D.

我在代码中执行此操作

@Override
public void onBackPressed() {
    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setTitle("Do you want to exit");
    // alert.setMessage("Message");

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            // Your action here
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            finish();
            onDestroy();

            System.exit(0);
        }
    });

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {}
    });

    alert.show();

}

所以这段代码可以工作,但是当我再次启动我的应用程序时,会出现Splash屏幕= Activity A,然后将其重定向到Activity B和Activity C.然后。

此外,我已将Splash活动的意图传递给在此处工作的活动B.我不想要这个。请指导我。

1 个答案:

答案 0 :(得分:0)

在您的活动A中,(启动画面)检查是否首次运行并相应地重定向用户:

第一次,当用户在活动B和C中保存数据时,请保存一个额外的布尔值以及您的用户信息:

SharedPreferences.Editor editor = getSharedPreferences("MyPrefs", MODE_PRIVATE).edit();
editor.putBoolean("firstRun", false);
editor.commit();

更改启动活动B的代码,如下所示:

SharedPreferences shared_prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE); 
boolean firstRun= shared_prefs.getBoolean("firstRun", true);
if(firstRun)
{
    Intent i = new Intent(ActivityA.this,ActivityB.class);
    startActivity(i);
}
else
{
    Intent i = new Intent(ActivityA.this,ActivityD.class);
    startActivity(i);
}

希望它有所帮助。