新添加的指定为Main的Activity并不总是显示“Main”Activity

时间:2012-02-19 23:11:45

标签: android android-activity android-lifecycle

请允许我解释一下我的困境。

我一直在构建一个应用程序,它会立即进入我的MainActivity.class。我在AndroidManifest.xml文件中声明了这个Activity:

<intent-filter>
   <action android:name="android.intent.action.MAIN" />
   <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

然后我意识到我想在我的应用中添加一个登录活动,因此需要NewMainActivity.class。我已经能够成功实现这个新的活动。我将旧<intent-filter>的{​​{1}}更改为以下内容:

MainActivity.class

然而,这就是我的问题所在。

当我按下登录页面上的后退键(<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> )时,它会通过NewMainActivity.classonPause()onStop()方法。当我再次启动应用程序时,未显示登录页面(onDestroy()),而是显示旧的NewMainActivity.class

任何人都可以猜到我仍然缺少/做错了吗?在我看来,它应该始终始终在登录页面上开始。如果代码示例有帮助,请告诉我。

2 个答案:

答案 0 :(得分:0)

从旧的MainActivity.class中删除您定义的intent-filter:

<intent-filter>
   <action android:name="android.intent.action.VIEW" />
   <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

更新:我首先理解你的问题不正确。我建议删除的intent-filter除了导出你的活动外什么都不做。这意味着任何应用程序都可以调用MainActivity.class的活动。因此,无论如何都应该删除它。

现在关于登录活动。据我了解你的情况如下。当您启动应用程序时,它首先启动登录活动。然后输入凭据,如果登录过程成功,则会显示主要活动。

因此,堆栈中有两个活动:登录和主类。然后,当您按下主页按钮并再次运行应用程序时,它将从堆栈中的最后一个活动开始,即主要活动。

因此,问题不在您的意图过滤器中。你应该完成你的活动。在这种情况下,您将始终从登录活动开始。

答案 1 :(得分:0)

如果一开始Yury的建议不起作用,并且你做了类似于我所做的事情,那就是复制并粘贴多台计算机之间的工作区并每次加载项目进行eclipse,然后只需启动一个新项目并复制所有课程中的实际文本到新项目中的新课程。