DialogFragment';java.lang.String android.content.Context.getPackageName()';关于空对象引用
我正在使用DialogFragment并使用Volley将数据插入mysql。数据已成功插入数据库,但之后总是崩溃。我总是在我的logcat java.lang.NullPointerException中遇到此错误:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getPackageName()”。错误在我的Toast中。请帮忙DialogFragment';java.lang.String android.content.Context.getPackageName()';关于空对象引用,java,android,Java,Android,我正在使用DialogFragment并使用Volley将数据插入mysql。数据已成功插入数据库,但之后总是崩溃。我总是在我的logcat java.lang.NullPointerException中遇到此错误:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getPackageName()”。错误在我的Toast中。请帮忙 public class ExpensesLeisureDialog extends DialogFr
public class ExpensesLeisureDialog extends DialogFragment {
EditText name, amount, details;
String nameHolder, amountHolder, detailsHolder;
Boolean CheckEditText;
RequestQueue requestQueue;
HashMap<String,String> hashMap = new HashMap<>();
String finalResult;
HttpParse httpParse = new HttpParse();
String HttpURL = "http://10.0.2.2:63343/TheMoneyger/api/add-leisure.php";
@Override
public Dialog onCreateDialog (Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.fragment_add_expenses_dialog, null));
requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
builder.setTitle("Add leisure expense")
.setPositiveButton("Add", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
name = (EditText) getDialog().findViewById(R.id.editText1);
amount = (EditText) getDialog().findViewById(R.id.editText2);
details = (EditText) getDialog().findViewById(R.id.editText3);
CheckEditTextIsEmpty();
StringRequest stringRequest = new StringRequest(Request.Method.POST, HttpURL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getContext(), response, Toast.LENGTH_SHORT).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getContext(), error.toString(), Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("expensename", nameHolder);
params.put("expenseamount", amountHolder);
params.put("details", detailsHolder);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
requestQueue.add(stringRequest);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
return builder.create();
}
public void CheckEditTextIsEmpty() {
nameHolder = name.getText().toString();
amountHolder = amount.getText().toString();
detailsHolder = details.getText().toString();
}
public class ExpensesLeisureDialog扩展了DialogFragment{
编辑文本名称、金额、详细信息;
字符串名称持有者、金额持有者、详细信息持有者;
布尔校验文本;
请求队列请求队列;
HashMap HashMap=新的HashMap();
字符串最终结果;
HttpParse HttpParse=新的HttpParse();
字符串HttpURL=”http://10.0.2.2:63343/TheMoneyger/api/add-leisure.php”;
@凌驾
创建对话框上的公共对话框(Bundle savedInstanceState){
AlertDialog.Builder=新建AlertDialog.Builder(getActivity());
LayoutFlater充气机=getActivity().GetLayoutFlater();
builder.setView(充气机.充气(R.layout.fragment_add_expenses_对话框,null));
requestQueue=Volley.newRequestQueue(getActivity().getApplicationContext());
builder.setTitle(“添加休闲费用”)
.setPositiveButton(“添加”,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
name=(EditText)getDialog().findViewById(R.id.editText1);
amount=(EditText)getDialog().findViewById(R.id.editText2);
详细信息=(EditText)getDialog().findViewById(R.id.editText3);
CheckEditTextIsEmpty();
StringRequest StringRequest=新的StringRequest(Request.Method.POST,HttpURL,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
Toast.makeText(getContext(),response,Toast.LENGTH_SHORT).show();
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(getContext(),error.toString(),Toast.LENGTH_SHORT).show();
}
}) {
@凌驾
受保护的映射getParams(){
Map params=新的HashMap();
参数put(“费用名称”,姓名持有人);
参数卖出价(“费用金额”,金额持有人);
参数put(“细节”,detailsHolder);
返回参数;
}
};
RequestQueue RequestQueue=Volley.newRequestQueue(getActivity());
添加(stringRequest);
}
})
.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
@凌驾
public void onClick(DialogInterface dialog,int which){
dialog.dismise();
}
});
返回builder.create();
}
public void CheckEditTextIsEmpty(){
nameHolder=name.getText().toString();
amountHolder=amount.getText().toString();
detailsHolder=details.getText().toString();
}
这是我的日志
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.widget.Toast.<init>(Toast.java:114)
at android.widget.Toast.makeText(Toast.java:277)
at android.widget.Toast.makeText(Toast.java:267)
at com.example.merylle.themoneyger.fragment.ExpensesLeisureDialog$2$1.onResponse(ExpensesLeisureDialog.java:65)
at com.example.merylle.themoneyger.fragment.ExpensesLeisureDialog$2$1.onResponse(ExpensesLeisureDialog.java:62)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getPackageName()
在android.widget.Toast.(Toast.java:114)
位于android.widget.Toast.makeText(Toast.java:277)
位于android.widget.Toast.makeText(Toast.java:267)
在com.example.merylle.themoneyger.fragment.ExpensesLeisureDialog$2$1.onResponse(ExpensesLeisureDialog.java:65)
在com.example.merylle.themoneyger.fragment.ExpensesLeisureDialog$2$1.onResponse(ExpensesLeisureDialog.java:62)
位于com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
位于com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
位于com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
位于android.os.Handler.handleCallback(Handler.java:790)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6494)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
Toast.makeText(getContext(), response, Toast.LENGTH_SHORT).show();
Toast.makeText(getActivity(), response, Toast.LENGTH_SHORT).show();
public class ExpensesLeisureDialog extends DialogFragment {
Context context;
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
}
.
.
}