これは私が予想もしなかった私の最初の奇妙な結果です。これは、その分野のスキルが不足している可能性があります。
さて、私はボタンを持っていました、それを通して私は電話ギャラリーから(おそらくsdcardから)画像を選択する必要があります。暗黙のインテントを使用して電話ギャラリーを呼び出し、で絶対画像パスを取得しましたstartActivityForResult()
。すぐに別のアクティビティを呼び出して、そのパスをに設定しstartActivity()
ます。
私のシナリオによると、onClick()
ofボタンに次のコードを記述しました。
@Override
public void onClick(View v) {
upLoadPhoto();
}
protected void upLoadPhoto() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
intent.putExtra("return-data", true);
System.out.println("select image");
startActivityForResult(intent, 1);
startActivity(next);
finish();
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1 && data != null && data.getData() != null){
Uri uri = data.getData();
if (uri != null) {
Cursor cursor = getContentResolver().query(uri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null);
cursor.moveToFirst();
final String imageFilePath = cursor.getString(0);
System.out.println("Background : "+imageFilePath);
next.putExtra("backImagePath", imageFilePath);
cursor.close();
super.onActivityResult(requestCode, resultCode, data);
}
}
}
ボタンをクリックすると、startActivity(next)
が最初に呼び出され、次にstartActivityForResult(intent,1)
が呼び出されます。バンドルオブジェクトを介して2番目のアクティビティでイメージパスを取得しようとしているので、最初に呼び出されているNullPointerException
ために取得しています。startActivity(next)
デバッグポイントが期待どおりではないことを確認したときに、顎を落としました。この問題の正確な理由がわかることを願っています。
ありがとう
Aswin