私は画像をアップロードしてサーバー上の画像の名前を設定する3つの関数を持っています。つまり、一度にすべての機能を動作させることはできません。 1つの関数だけが動作し、もう1つはNullPointerExceptionをスローします。これらは、関数内の最初の行だけではなく、何かを指していません。説明なしのAndroid Volley NullPointerException
private void uploadMainImage()
{
RequestQueue queue = Volley.newRequestQueue(getActivity());
StringRequest ppRequest = new StringRequest(Request.Method.POST,URL_IMAGE_MAIN , new Response.Listener<String>()
{
@Override
public void onResponse(String response)
{
System.out.println("Response[Job Image Main]: " + response.toString());
uploadThumbImage();
}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error)
{
System.out.println("Job Image profile Error: " + error.getMessage());
progressDialog.hide();
progressDialog.dismiss();
}
})
{
@Override
protected Map<String, String> getParams()
{
Map<String, String> params = new HashMap<String, String>();
params.put("ImageName",jobID + "-1.jpg");
params.put("base64", pp_finalImage);
return params;
}
};
queue.add(ppRequest);
}
private void uploadThumbImage()
{
RequestQueue queue = Volley.newRequestQueue(getActivity());
StringRequest ppRequest = new StringRequest(Request.Method.POST,URL_IMAGE_THUMB , new Response.Listener<String>()
{
@Override
public void onResponse(String response)
{
System.out.println("Response[Job Image Thumb]: " + response.toString());
//updateImageName();
}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error)
{
System.out.println("Job Thumb Image profile Error: " + error.getMessage());
progressDialog.hide();
progressDialog.dismiss();
}
})
{
@Override
protected Map<String, String> getParams()
{
Map<String, String> params = new HashMap<String, String>();
params.put("ImageName",jobID + "-1.jpg");
params.put("base64", thumb_finalImage);
return params;
}
};
queue.add(ppRequest);
}
private void updateImageName()
{
SharedPreferences prefs = getActivity().getSharedPreferences("USER_DETAILS", Context.MODE_PRIVATE);
String userID = prefs.getString("USER_ID", "NO_SESSION");
RequestQueue queue = Volley.newRequestQueue(getActivity().getApplicationContext());
Map<String, String> params = new HashMap<String, String>();
params.put("postpicture ", jobID + "-1.jpg");
params.put("userid", "1");
params.put("postjobid ", jobID);
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST,URL + "updateJobPostImage" ,new JSONObject(params), new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response)
{
Log.d(LOG_TAG,"Response[Image Name Update Job]: " + response.toString());
try
{
String status = response.getString("result");
if(status.equals("Success"))
{
progressDialog.hide();
progressDialog.dismiss();
}
else
{
Log.d(LOG_TAG," Image Name Update Failed, Aborting.");
progressDialog.hide();
progressDialog.dismiss();
}
}
catch (JSONException e)
{
Log.d(LOG_TAG,e.getMessage());
e.printStackTrace();
}
}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error)
{
progressDialog.hide();
progressDialog.dismiss();
Log.d(LOG_TAG, "Image Name Update Error: " + error.getMessage());
}
});
queue.add(request);
}
これはログ
04-30 00:41:29.074 14041-14041/com.antisaby.trackit E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.antisaby.trackit, PID: 14041
java.lang.NullPointerException
at com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:43)
at com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:78)
at fragments.homefragments.AddServiceFragment.uploadThumbImage(AddServiceFragment.java:397)
at fragments.homefragments.AddServiceFragment.access$1100(AddServiceFragment.java:50)
at fragments.homefragments.AddServiceFragment$8.onResponse(AddServiceFragment.java:368)
at fragments.homefragments.AddServiceFragment$8.onResponse(AddServiceFragment.java:363)
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:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5322)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
あるuploadMainImage関数が最初に実行。応答が良い場合は、uploadThumbImageを呼び出します。 uploadThumbImageの結果が良好な場合は、updateImageNameを呼び出します。私が関数をコメントアウトしない場合、例外はuploadThumbImage関数で発生します。最初の関数をコメントアウトすると、最後の関数で例外が発生します。例外をキャッチしようとすると、メッセージはnullになります。
私は 'getActivityは()' nullの場合、この方法 –
の最初の行に ')(' isAddedをチェックし、私はisAdded()関数でそれをチェックし、それはそれの関数でfalseを返すと思います失敗する。理由は何でしょうか?この関数の前にあるすべての関数は機能しますが、コードが単一のフラグメントになっていると、この関数が失敗するのはなぜですか? –
大丈夫私はそれを解決しました。これらの前に別の関数で 'getFragmentManager()。popBackStack(null、FragmentManager.POP_BACK_STACK_INCLUSIVE); 'を呼び出していましたが、削除するのを忘れました。助けてくれてありがとう! –