无法从应用程序类启动活动 - Android

9

我试图根据用户是否已登录来访问应用程序,基于此尝试启动应用程序的活动。在执行此操作时,应用程序在Application类中崩溃。

Application类的代码如下:

public class MyClass extends Application {
    public static Context context;

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

        if(ParseUser.getCurrentUser().isAuthenticated()){
            startActivity(new Intent(context, MainActivity.class));
        }

    }
}

有什么建议,为什么会发生这种情况?
在我的清单文件中,我已经声明了另一个活动的意图过滤器。
 <activity
            android:name=".Activities.Register"
            android:label="@string/title_activity_register" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

1
你是否将标志添加到Intent中了?intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - Nicholas Ng
我不这么认为。在哪里以及如何添加它? - Bullionist
你在AndroidManifest中声明了Register,但你使用MainActivity.class来启动它?! - Nicholas Ng
兄弟,我已经在清单文件中声明了主活动,但它并没有被保留为启动器活动,我的问题是我应该将哪一个作为启动器活动? - Bullionist
那么,如果仅关注MainActivity,那么Register与此问题无关。 - Nicholas Ng
显示剩余2条评论
2个回答

20
Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

此外,如果您在Android Studio中查看Logcat,您应该能够看到错误日志,其中已经告诉您如何解决此问题。


抱歉,日志功能无法正常工作。有时候它不会打印任何内容。 - Bullionist
没问题,这有帮助吗? - Nicholas Ng
是的,它有帮助,我已经点赞了。但我还没有接受,因为我还有6分钟可以接受。哈哈。请给我建议关于清单问题? - Bullionist

2

你不应该在应用程序类中启动新的活动。我认为,如果完全删除应用程序类中的活动启动代码,并在启动时选择一个依赖于用户是否已登录的片段进行附加,将会更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接