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.makeText(上下文,“您的投票已发送”,Toast.LENGTH\u LONG.show();
希望有帮助。简单的方法:
私有上下文;
onCreateView()
:context=container.getContext();
Toast.makeText(上下文,“您的投票已发送”,Toast.LENGTH\u LONG.show();
希望有帮助。唯一的原因是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
)
同时避免其他例外情况。:)