在班级socialNetworksActivity
我有一个方法:
public void getResultFromFBPost(String result)
{
if (result.equals("SUC"))
ShowToast("Your message have been posted successfully", Toast.LENGTH_LONG);
else
ShowToast("There was an error posting,"
+ " please check your Internt connection", Toast.LENGTH_LONG);
}
调用此方法(也在类socialNetworksActivity中):
public void ShowToast(String message, int duration)
{
LayoutInflater inflater = getLayoutInflater();
....
}
当我从类中调用此方法时,它可以正常工作。
但是当我从B类这样称呼这个方法时:
@Override
protected void onPostExecute(String result)
{
socialNetworksActivity.getResultFromFBPost(result);
pd.dismiss();
}
代码到达时我得到NullPointerException
:
LayoutInflater inflater = getLayoutInflater();
知道为什么吗?
答案 0 :(得分:1)
我不确定为什么LayoutInflater会回来null
但是获取LayoutInflater的另一种方法是简单地调用LayoutInflater.from(this)
,或者如果this
不是Context,那么其他上下文,可能使用方法getContext()
或getApplicationContext()
,具体取决于您所在的课程。
答案 1 :(得分:1)
我认为从异步任务调用它是一个问题。从Activity中调用它,或者如果你不想这样做,就将活动上下文传递给AsyncTask并在该对象上调用它。 另外一定要在UI线程上调用它(你已经通过使用onPostExecute来做到这一点,但请记住这一点。)