【问题标题】:Android Backpress安卓后台
【发布时间】:2014-10-11 08:39:27
【问题描述】:

我的 Android 应用中有 5 个活动。 活动 A = 飞溅 活动 B 和活动 C = 获取一些用户数据 活动 D 和活动 E 显示了一些基于活动 B 和 C 中给出的用户信息的计算值。 用户第一次启动我的应用程序后,活动 B 和 C 将不会再次出现。所以用户只能插入他的信息一次。 (这是我使用共享偏好完成的) 现在我想要的是,如果用户从 Activity D 和 E 按下返回按钮,那么每当他启动应用程序时,就会出现闪屏并将他直接带到 Activity D 和 E。永远不要在 Activity 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();

}

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

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

【问题讨论】:

  • 你的意思是永远不要在问题结束时进行活动 B 和 C?
  • 是的#Darpan 我不希望用户再次在那里重新输入我的活动 B 和活动 C 正在询问表单用户的数据。
  • 那么我猜@mysticmagic 的答案会起作用。试一试。

标签: android android-activity splash-screen


【解决方案1】:

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

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

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

更改启动 Activity 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);
}

希望对你有帮助。

【讨论】:

  • 我会尝试这样做。谢谢
  • MysticMagic 请告诉我如何在 public void onBackPressed() {} 上提供此共享偏好代码
  • 这有什么问题?
  • 我给了你在启动画面的后压上写的这段代码,那是我的活动 A。当我按下后退时。重新启动我的应用程序时,会出现启动画面并将我带到 Activity B。:(
  • editor.put 代码将进入Activity D和E的onSubmit
猜你喜欢
  • 2015-08-16
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多