在开始正常的主要活动时出错

时间:2018-05-05 08:23:57

标签: java android nullpointerexception

我目前正在休息,因为我可以开始正常startActivity()。它总是给我这个错误:

  

尝试调用虚方法   ' android.app.ActivityThread $ ApplicationThread   android.app.ActivityThread.getApplicationThread()'在null对象上   参考

我是从我的应用程序开始的 欢迎活动:

application.getUserFromDatabase(getApplicationContext(), username, password);

应用:

public void getUserFromDatabase(Context context, String username, String password) {
   //new GetFromDatabase().execute("getUser.php", "?username=" + username + "&password=" + password, this, context);
    WelcomeActivity activity = new WelcomeActivity();
    activity.startMainActivity();
}

AndroidManifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.mydomain.app">

    <application
        android:name=".MainApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">

        </activity>
        <activity android:name=".WelcomeActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

提前谢谢你:)

编辑: 我忘了在这里添加我的方法startMainActivity:

public void startMainActivity(){
    Intent startMain = new Intent(getApplicationContext(), MainActivity.class)
    startActivity(startMain);
}

2 个答案:

答案 0 :(得分:0)

你必须使用startActivity();

的意图

示例:

 Intent intent = new Intent(this, WelcomeActivity.class);
 startActivtiy(intent);

答案 1 :(得分:0)

它肯定会导致您出现空指针异常,因为尚未创建WelcomeActivity。您无法通过以下方式创建活动的新实例来启动活动:

WelcomeActivity activity = new WelcomeActivity();

您的活动需要从以下开始:

Intent welcome = new Intent(context, WelcomeActivity.class);
context.startActivtiy(welcome);

或添加正确的intent-filter,以便Android系统启动该活动。

您可以使用以下内容从Application开始您的活动:

// FLAG_ACTIVITY_NEW_TASK is required
// FLAG_ACTIVITY_CLEAR_TOP brings back to the top of the stack
Intent mainActivity = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mainActivity);

虽然我认为您不应该通过应用程序启动活动。您需要仔细考虑您的设计,以便与应用程序没有活动连接。