我无法从异步任务调用活动,我尝试了不同的方法,但每次我在日志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);
}
如何从异步任务调用活动,实际上我想在异步任务完成时调用活动。
答案 0 :(得分:2)
我认为问题在于:
Intent i = new Intent(getApplicationContext(), ProfileHome.class);
通常,使用getApplicationContext()
作为Context
是一个非常糟糕的主意,除非你真的知道你在做什么。相反,您应该使用要从中启动新Context
的{{1}}。您可以将其作为Activity
上的值传递,或者甚至存储.execute()
构造函数中的Context
并存储它,以便您以后可以使用它你的AsyncTask
方法。
----编辑----
这是一个例子:
onPostExecute()