0

有些帖子涉及到这个问题,但我找不到真正直接接近或解决它的帖子。

当用户第一次进入应用程序时,我有一个主要活动,我想调用/创建一个帮助屏幕(它实际上是第二个活动)。

但是,对于熟悉该应用程序的用户,我想让他们选择在每次启动时不显示帮助屏幕。

因此,我在 SharedPreferences 文件中设置了首选项。所有代码都运行良好,包括 SharedPreferences 的东西(我可以通过查看我在设置屏幕中设置的复选框来检查这一点,我允许用户选择退出(或稍后进入)打开帮助屏幕。)

这是我在 onCreate() (覆盖)方法开头的代码:

spSettings = getSharedPreferences(strPrefsFilename, 0);
bHelpOnStart = spSettings.getBoolean(strHelpParamName, true);

然后,我简单地使用:

if (bHelpOnStart)
{
    // Show help screen.
}

问题是每次我从其他活动返回时,我的主要活动的 onCreate() 都会被调用!我希望我的测试是否仅在用户从“外部”进入应用程序时才会显示帮助屏幕,特别是从主页-> 应用程序页面。

在我刚才提到的意义上,只有当 Activity 来自“外部”时才调用 Activity 中的方法?

谢谢!

4

1 回答 1

0

可能的解决方案:

在应用程序类中:

public static boolean firstStart = true;

在活动类中:

onCreate(){
   boolean firstStart = ((MyApplication)getApplicationContext()).firstStart;
   if (bHelpOnStart && firstStart) { startHelp(); }

   ((MyApplication)getApplicationContext()).firstStart = false;
}

请注意,这不是一种好的编码风格(单例更好),但您应该明白这一点。当然,如果您的应用程序停留在内存中并且用户从启动器再次打开它,它不会显示 firstStart;但至少当它从(您的应用程序的)一项活动返回到主要活动时,它不会再次显示帮助。没有简单的方法来确定谁开始您的活动。

于 2012-05-27T01:00:21.867 回答