Android getActivity()片段上的NullPointerException

Android getActivity()片段上的NullPointerException,android,android-fragments,Android,Android Fragments,当前在片段中我运行一个普通的Toast.makeText()命令。执行该命令需要时间,因为它位于Volley操作中。在土司实际出现期间,用户有时间返回到上一个片段s。如果在这种情况下,用户返回到上一个片段,则会发生NullPointerException 11-28 13:53:53.965: E/AndroidRuntime(22654): FATAL EXCEPTION: main 11-28 13:53:53.965: E/AndroidRuntime(22654): Process: c

当前在
片段中
我运行一个普通的
Toast.makeText()
命令。执行该命令需要时间,因为它位于
Volley
操作中。在
土司
实际出现期间,用户有时间返回到上一个
片段
s。如果在这种情况下,用户返回到上一个
片段
,则会发生
NullPointerException

11-28 13:53:53.965: E/AndroidRuntime(22654): FATAL EXCEPTION: main
11-28 13:53:53.965: E/AndroidRuntime(22654): Process: com.developmentcheck.dcforpublic, PID: 22654
11-28 13:53:53.965: E/AndroidRuntime(22654): java.lang.NullPointerException
11-28 13:53:53.965: E/AndroidRuntime(22654):    at android.widget.Toast.<init>(Toast.java:93)
11-28 13:53:53.965: E/AndroidRuntime(22654):    at android.widget.Toast.makeText(Toast.java:241)
它用于以下方法(在创建的活动中调用):

public void castVote(最终字符串id,int vote_state,
最终字符串情况)抛出JSONException{
JsonObjectRequest jsrq=新的JsonObjectRequest(Request.Method.POST,
url、json、new Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
//TODO自动生成的方法存根
Log.i(“JSON_RESPONSE_VOTE”,RESPONSE.toString());
Toast.makeText(getSherlockActivity(),“您的投票已发送”,
Toast.LENGTH_LONG).show();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//TODO自动生成的方法存根
Toast.makeText(
getSherlockActivity(),
“很抱歉出现问题。请再次更新。”,
Toast.LENGTH_LONG).show();
}
});

请提供帮助。

在fragment类中创建成员变量
mPendingToastText
。然后尝试以下操作:

@Override
public void onErrorResponse(VolleyError error) {
    // TODO Auto-generated method stub
    if (getSherlockActivity() != null) {
        Toast.makeText(
            getSherlockActivity(),
            "Sorry something went wrong. Please update again.",
            Toast.LENGTH_LONG).show();
    } else {
         mPendingToastText = "Sorry something went wrong. Please update again.";
    }

}
现在将
onAttach()
事件覆盖到您的片段,如下所示:

@Override
public void onAttach(Activity activity) {
    if (!TextUtils.isEmpty(mPendingToastText) {
                Toast.makeText(
                    activity,
                    mPendingToastText,
                    Toast.LENGTH_LONG).show();
                mPendingToastText = "";
    }
    super.onAttach(activity);
}
此代码不是一个好的解决方案,但它应该让您了解正在发生的事情。理想情况下,您应该有某种方法来集中您的祝酒词。例如,您可以在活动中注册广播接收器,并将所有祝酒词发送给它处理


希望有帮助。

在fragment类中创建成员变量
mPendingToastText
。然后尝试以下操作:

@Override
public void onErrorResponse(VolleyError error) {
    // TODO Auto-generated method stub
    if (getSherlockActivity() != null) {
        Toast.makeText(
            getSherlockActivity(),
            "Sorry something went wrong. Please update again.",
            Toast.LENGTH_LONG).show();
    } else {
         mPendingToastText = "Sorry something went wrong. Please update again.";
    }

}
现在将
onAttach()
事件覆盖到您的片段,如下所示:

@Override
public void onAttach(Activity activity) {
    if (!TextUtils.isEmpty(mPendingToastText) {
                Toast.makeText(
                    activity,
                    mPendingToastText,
                    Toast.LENGTH_LONG).show();
                mPendingToastText = "";
    }
    super.onAttach(activity);
}
此代码不是一个好的解决方案,但它应该让您了解正在发生的事情。理想情况下,您应该有某种方法来集中您的祝酒词。例如,您可以在活动中注册广播接收器,并将所有祝酒词发送给它处理

希望有帮助。

简单的方法:

  • 首先声明上下文变量:
    私有上下文;
  • onCreateView()

    context=container.getContext();
  • 用于Toast:
    Toast.makeText(上下文,“您的投票已发送”,Toast.LENGTH\u LONG.show();
  • 这是作为视图组从容器中获取上下文,因此可以显示Toast。

    希望有帮助。

    简单的方法:

  • 首先声明上下文变量:
    私有上下文;
  • onCreateView()

    context=container.getContext();
  • 用于Toast:
    Toast.makeText(上下文,“您的投票已发送”,Toast.LENGTH\u LONG.show();
  • 这是作为视图组从容器中获取上下文,因此可以显示Toast。


    希望有帮助。

    唯一的原因是getSherlockActivity返回null。何时何地调用
    Toast
    ?如何解决?我也尝试了getActivity()。@blackbeltI在我的截击函数中调用Toast…onResponse()确切地说。@AmulyaKhare检查一下,唯一的原因是getSherlockActivity返回null。何时何地调用
    Toast
    ?如何解决?我也尝试了getActivity()。@blackbeltI在我的截击函数中调用Toast…onResponse()确切地说,@AmulyaKhare检查这一点,而不是使用
    getActivity()
    getSherlockActivity()
    …I在
    onAttach()
    中声明…
    this.activity=activity;
    …因此在调用Toast时…我声明
    Toast.makeText(activity,…)
    ,这很有效。你可以将其作为一个编辑…我将删除评论…谢谢:)这个想法来自你。很好!我很高兴它对你有效。我想你可以将你的评论留在那里。按照你说的做是一个好主意,但请记住在
    onDetach()上设置
    this.activity=null
    以及避免其他异常。:)而不是使用
    getActivity()
    getSherlockActivity()
    …I在
    onAttach()
    中声明…
    this.activity=activity;
    …因此,在调用Toast时…我声明
    Toast.makeText(activity,…)
    ,这很有效。你可以将其作为一个编辑…我将删除评论…谢谢:)这个想法来自你。很好!我很高兴它对你有效。我想你可以将你的评论留在那里。按照你说的做是一个好主意,但请记住在
    onDetach()上设置
    this.activity=null
    同时避免其他例外情况。:)