画像のUri
(ファイルパス)を取得しようとしています。ギャラリーからImageView
に移動し、その画像を前のアクティビティ(MainActivity
)の別のNetworkImageView
にも表示しています。Uriを文字列に変換すると、Uriがnullになります
Filepath
変数にコードのどこからでもアクセスできるようにします。 uploadImage()
にアクセスしようとしています。最初にonActivityResult()
に初期化しました。 uploadImage()
では、Uri
をString
に変換しようとしていますので、MainActivityにIntent
として送り返すことができます。
私がコードを実行すると、uploadImage()
にNullPointerException
があり、Uri
をString
に変換します。デバッグ時に、Filepath
変数がnullを返すことに気付きました。
コードで何が間違っているのかを特定して解決策を提案できますか?
Uri filePath;
public void uploadImage() {
//Showing the progress dialog
final ProgressDialog loading = ProgressDialog.show(this, "Uploading...", "Please wait...", false, false);
StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
loading.dismiss();
Toast.makeText(Activity2.this, s, Toast.LENGTH_LONG).show();
Intent returnIntent = new Intent();
//Getting a NullPointerException on this line
String str = filePath.toString();
returnIntent.putExtra("UPDATED_PIC", str);
setResult(RESULT_OK,returnIntent);
finish();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//Dismissing the progress dialog
loading.dismiss();
//Showing toast
Toast.makeText(Activity2.this, volleyError.getMessage().toString(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
//Converting Bitmap to String
String image = getStringImage(bitmap);
//Creating parameters
Map<String, String> params = new Hashtable<String, String>();
//Adding parameters
params.put(KEY_IMAGE, image);
//returning parameters
return params;
}
};
//Creating a Request Queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
//Adding request to the queue
requestQueue.add(stringRequest);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri filePath = data.getData();
try {
//Getting the Bitmap from Gallery
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
//Setting the Bitmap to ImageView
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
ここで、 'filePath'に値を代入していますか? –
'Uri filePath = data.getData();'を 'filePath = data.getData();'に変更します。 –