onActivityResult 메소드 내에서 ImageView에서 이미지를 검색 한 후 전화로 이미지를 표시하려고합니다. OnCreate 메서드 바로 전에 ImageView를 선언했습니다. 레이아웃에서 ID로 찾은 다음 마지막으로 선택한 이미지를 표시하려고합니다. 그러나 imgPreview는 여전히 회색이며 "개인 필드 ImageView가 할당되지 않았습니다"라는 메시지를 볼 수 있습니다. onActivityResult 내에서 imgPreview에 비트 맵을 설정하는 동안 참조 문제는 발생하지 않지만Android : ImageView.setImageBitmap을 사용하는 NullPointerException
픽업 활동에서 주 활동으로 돌아가는 동안이 앱을 디버깅하려고 할 때 java.lang.NullPointerException이 발생합니다. 신고 한 경우
ImageView imgPreview = (ImageView) findViewById(R.id.imageView);
OnActivityResult 내에 추가로 오류가 발생하지 않습니다. 왜 그런 일이 일어 났는지 설명 할 수 있습니까? 방법을 사용할 때마다 매번 imgPreview를 찾아야합니까? 전체 코드 조각은 아래에 있습니다.
public class MainActivity extends AppCompatActivity implements TaskComplete {
private static final int BROWSE_PIC_REQUEST_CODE = 300;
private ImageView imgPreview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imgPreview = (ImageView) findViewById(R.id.imageView);
}
public void onClick3(View view) {
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, BROWSE_PIC_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == BROWSE_PIC_REQUEST_CODE && resultCode == RESULT_OK) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
try {
imgPreview.setImageBitmap(BitmapFactory.decodeFile(picturePath,options));}
catch (Exception e) {
Log.e("test",e.toString());
}
else { some code };
}
'imgPreview'와 같은 이름의 로컬 변수와 전역 변수가 있습니다. 로컬 선언을 제거하십시오. 그것은 잘 작동합니다. –
나는 이미 그것을 얻었다. 고맙습니다. –
@KNeerajLal 변수에 전역 범위 (public/static이 아님)가 없으며 인스턴스 변수입니다. –