我为此疯狂。
我遇到了一个非常奇怪的问题。日志中没有任何内容表明出现任何问题。快速浏览我的应用程序的工作方式。我以新用户身份运行应用程序,我看到一个启动画面,检查我是否已登录,作为新用户,我不是,所以我需要登录页面。我登录facebook(获取basic_info和生日权限)。然后,应用程序启动教程页面viewpager(FragmentPagerActivity.class)。
当用户到达最后一页时,有一个按钮说他完成了教程。它在SharedPrefs中存储一个true的布尔值,并将它们带到一个加载谷歌地图视图的导航抽屉。
这是我的问题。一旦我到达地图页面并想要退出应用程序,我按下后退按钮,应用关闭。如果我决定再次启动应用程序,它将再次显示教程 AND 启动带有地图视图的导航抽屉!
在启动画面上,我运行一个if语句,看看他们是否看过教程,SharedPrefs返回true。所以if语句正确运行。 (这正是正确启动导航抽屉的过程。)
如果我从Android的任务管理器中删除该应用程序然后启动它,它就可以了!所以在某个地方有一个FragmentPagerActivity的实例,它总是在其他所有东西之上启动。
有谁知道我能做什么?抱歉,文字墙。这是我在登录后立即调用FragmentPagerActivity的方法:
Intent in = new Intent(MainActivity.this, FragmentPagerActivity.class);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(in);
finish();
我也在运行一个获取用户位置的服务,实际上就是这样:http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/
这会干扰吗?请问你是否想要更多其他部分的代码,我只是看不到FragmentPagerActivity.class的推出位置。它不会被称为任何地方。我甚至在启动画面上注释了它在应用程序中调用的一个地方。
我几次尝试在我的日志中得到了这个:
startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { cmp=package.name.here/.FragmentPagerActivity }
但是,在我更改了所有Intent调用中的上下文以停止getApplicationContext()
并使用SplashScreen.this
后,这不会显示。结果我假设我修好了它。
再一次,为文本墙道歉,我真的很感激别人的帮助。谢谢。
答案 0 :(得分:0)
问题在于Facebook,它每次都会启动活动,因为它已在facebook的仪表板中列出。将登录页面更改为片段,它解决了问题。