다이얼로그 창을 하나 생성한다음, 이미지를 불러오기 위하여 버튼을 눌럿을 때 이미지를 선택하는 창을 불러오게 하려고 했는데 버튼을 누르면 NullPointerException이 납니다..
아래는 소스코드입니다.
public class NewBucketDialog extends AppCompatActivity {
private static final int PICK_FROM_ALBUM = 0;
private static final int CROP_FROM_IMAGE = 1;
private Context mContext;
private ImageView bucketImage;
private Uri imgUri;
private String absolutePath;
private Realm realm;
public NewBucketDialog(Context context)
{
this.mContext = context;
realm = Realm.getDefaultInstance();
}
public void buildAndShowInputBucketDialog(){
Log.d("TAG", "buildAndShowInputBucketDialog called!!");
final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle("Add A Bucket");
LayoutInflater li = LayoutInflater.from(mContext);
View dialogView = li.inflate(R.layout.bucket_add_dialog_view, null);
final Button imgSelectBtn = (Button) dialogView.findViewById(R.id.dialog_select_imagebtn);
final Spinner bucketCategory = (Spinner) dialogView.findViewById(R.id.dialog_select_category);
final EditText bucketTitle = (EditText) dialogView.findViewById(R.id.dialog_edit_bucket_title);
final EditText bucketPrice = (EditText) dialogView.findViewById(R.id.dialog_edit_bucket_price);
bucketImage = (ImageView) dialogView.findViewById(R.id.dialog_image_view);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext
, android.R.layout.simple_spinner_item
, mContext.getResources().getStringArray(R.array.categories));
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
bucketCategory.setAdapter(adapter);
bucketCategory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
bucketPrice.setText("");
if(position == 2)
bucketPrice.setVisibility(View.VISIBLE);
else if(position == 1 || position == 3)
bucketPrice.setVisibility(View.INVISIBLE);
}
@Override
public void onNothingSelected(AdapterView<?> parent) { }
});
imgSelectBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(MediaStore.Images.Media.CONTENT_TYPE);
Log.d("TAG", "imgSelectBtn Onclick");
startActivityForResult(intent, PICK_FROM_ALBUM);
}
});
builder.setView(dialogView);
builder.setPositiveButton("추가", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
addBucket(bucketCategory.getSelectedItemPosition()
, bucketTitle.getText().toString()
, bucketPrice.getText().toString()
, ((BitmapDrawable) bucketImage.getDrawable()).getBitmap());
}
});
builder.setNegativeButton("취소", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
final AlertDialog dialog = builder.show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("TAG", "new bucket, onActivityResult call!1");
if(resultCode != RESULT_OK) return;
switch (requestCode){
case PICK_FROM_ALBUM:
break;
case CROP_FROM_IMAGE:
break;
}
}
}
그리고 이건 에러 로그입니다.
06-05 09:17:33.639 17643-17643/bibucketlist.com.mybucketlist D/TAG: buildAndShowInputBucketDialog called!!
06-05 09:17:34.890 17643-17643/bibucketlist.com.mybucketlist D/TAG: imgSelectBtn Onclick
06-05 09:17:34.890 17643-17643/bibucketlist.com.mybucketlist D/AndroidRuntime: Shutting down VM
06-05 09:17:34.890 17643-17643/bibucketlist.com.mybucketlist E/AndroidRuntime: FATAL EXCEPTION: main
Process: bibucketlist.com.mybucketlist, PID: 17643
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread
android.app.ActivityThread.getApplicationThread()' on a null object reference
at android.app.Activity.startActivityForResult(Activity.java:4226)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79)
at android.app.Activity.startActivityForResult(Activity.java:4183)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859)
at bibucketlist.com.mybucketlist.dialog.NewBucketDialog$2.onClick(NewBucketDialog.java:94)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)