无法从onPostExecute运行新活动

时间:2013-10-27 12:36:16

标签: java android android-asynctask

在我从httpUrlConnection获得响应后,我无法启动mainActivity。 这是我的onPostExecute方法

    protected void onPostExecute(String[] result) {
        serv.httphelper.handleResults(result);

    }

在方法handleResult()中处理响应代码。如果响应代码是200,我想在loginActivity类中运行一个新方法

public void handleResults(String[] result) {

    status = result[0].toString();
    instructions = result[1].toString();
    jsonString = result[2];

    Log.d("DEBUG", status);

    if (status.equals("200")) {
        serv.loginActivity.proceed();

    } else if (status.equals("400")) {
        serv.loginActivity.loginError();

    } else if (status.equals("401")) {
        serv.loginActivity.loginError();

    }

}

当我尝试从proceed()方法启动一个新活动时,我得到一个nullpointerexception

    public void proceed(){
    startActivity(new Intent (LoginActivity.this, MainActivity.class));
    Log.d("TEST", "Proceed success");


}

我的服务类适合任何想知道:

public class Service {

public static HttpHelper httphelper = new HttpHelper();
public static HttpConnect conn = new HttpConnect();
public static LoginActivity loginActivity = new LoginActivity();

}

这是我的logCat: LogCat

提前致谢!

1 个答案:

答案 0 :(得分:0)

您的问题是当您在该行开始活动时:

startActivity(new Intent (LoginActivity.this, MainActivity.class));

好吧,你创建了一个试图转到可能不存在的LoginActivity.this的意图!
除此之外,您必须提供当前正在运行的实际活动的实例。

我建议您使用的解决方案是将proceed()当前正在运行的活动的实例传递给LoginActivity.this而不是{{1}}。 如果您没有当前活动,请尝试放置应用程序的上下文,并将其添加为新任务的标志。