从异步任务调用活动

时间:2014-04-18 19:25:49

标签: android android-intent android-asynctask

我无法从异步任务调用活动,我尝试了不同的方法,但每次我在日志cat中得到一个空指针异常。

我试过这个。

@Override
protected void onPostExecute(String result) {



    if(signedin==false)
    {
        Toast.makeText(XMPPClient.context, "authentication failed:", Toast.LENGTH_LONG).show();                
    }
    Intent i = new Intent(getApplicationContext(), ProfileHome.class);
    startActivity(i);

}

以及

@Override
protected void onPostExecute(String result) {


    XMPPClient xmpp = new XMPPClient();
    if(signedin==false)
    {
        Toast.makeText(XMPPClient.context, "authentication failed:", Toast.LENGTH_LONG).show();                
    }else
        xmpp.startnewactivity();

}

在XMPPClient.class中

public void startnewactivity()
{
    Intent i = new Intent(getApplicationContext(), ProfileHome.class);
    startActivity(i);
}

如何从异步任务调用活动,实际上我想在异步任务完成时调用活动。

1 个答案:

答案 0 :(得分:2)

我认为问题在于:

Intent i = new Intent(getApplicationContext(), ProfileHome.class);

通常,使用getApplicationContext()作为Context是一个非常糟糕的主意,除非你真的知道你在做什么。相反,您应该使用要从中启动新Context的{​​{1}}。您可以将其作为Activity上的值传递,或者甚至存储.execute()构造函数中的Context并存储它,以便您以后可以使用它你的AsyncTask方法。

----编辑----

这是一个例子:

onPostExecute()