Как изменить внутренний вид изображения dialog builder щелчком мыши, и этот щелчок выбирает изображение из галереи?
При нажатии кнопки появляется диалоговое окно предупреждения, в котором есть один вид изображения и три текста редактирования. При нажатии на вид изображения экран перейдет в галерею, а после нажатия на одно из изображений галерея закроется, и вид изображения должен быть установлен с выбранным изображением.
Это то, что я намеревался сделать, но с текущим кодом, похоже, есть недостаток. Мне удалось сходить в галерею, подобрать картинку и все. Выбранное изображение не задается в представлении изображения в диалоговом окне. Она проходит попытка ошибка, чтобы вызвать виртуальный метод Void андроид.виджет.ImageView.setImageURI(android.net-да.Uri) по ссылке на нулевой объект
Что я уже пробовал:
public class Recieve_Payment extends AppCompatActivity { public static Uri selectedImageUri; Button Addcheque; private static final int SELECTED_PICTURE = 1; private static final String TAG = "Recieve Activity" ; saver = findViewById(R.id.save_cheque); your_scrollview = findViewById(R.id.your_scrollview); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recieve__payment); Addcheque = findViewById(R.id.addcheque); //this button click is for opening dialog Addcheque.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { val = Integer.parseInt(tx.getText().toString()); // this button opens dialog box openDialog(); } }); @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (requestCode == SELECTED_PICTURE) { // Get the url from data Uri selectedImageUri = data.getData(); if (null != selectedImageUri) { // Get the path from the Uri String path = getPathFromURI(selectedImageUri); Log.i(TAG, "Image Path : " + path); // Set the image in ImageView ((ImageView) findViewById(R.id.plimage)).setImageURI(selectedImageUri); // here the image uri or image it self is not being passed to dialog so i am not sure but from here null object is passed } } } } public String getPathFromURI(Uri contentUri) { String res = null; String[] proj = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null); if (cursor.moveToFirst()) { int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); res = cursor.getString(column_index); } cursor.close(); return res; } private void openDialog(){ LayoutInflater inflater = LayoutInflater.from(Recieve_Payment.this); View subView = inflater.inflate(R.layout.dialogz, null); final EditText subEdit_Ch_Amount = (EditText)subView.findViewById(R.id.dialogEditText); final EditText subEdit_Ch_No = (EditText)subView.findViewById(R.id.dialogEditText2); final EditText subEdit_Ch_Date=(EditText)subView.findViewById(R.id.dialogEditText3); subImageView = (ImageView)subView.findViewById(R.id.plimage); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Add Cheque "+ i); builder.setMessage("AlertDialog Message"); builder.setView(subView); AlertDialog alertDialog = builder.create(); View view= inflater.inflate(R.layout.dialogz, null); // on image click gallery intent will open view.findViewById(R.id.plimage).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent chooseImageFromGallery = new Intent(); chooseImageFromGallery.setType("image/*"); chooseImageFromGallery.setAction(Intent.ACTION_GET_CONTENT); try { startActivityForResult(Intent.createChooser(chooseImageFromGallery, "Select Picture"),SELECTED_PICTURE); } catch (ActivityNotFoundException e) { } } }); builder.setView(view); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { textInfo.setText(subEdit_Ch_Amount.getText().toString()); Cheque_Payment addchequer = new Cheque_Payment(); addchequer.setChequeAmount(subEdit_Ch_Amount.getText().toString()); addchequer.setChequeNumber(subEdit_Ch_No.getText().toString()); addchequer.setChequeDate(subEdit_Ch_Date.getText().toString()); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(Recieve_Payment.this, "Cancel", Toast.LENGTH_LONG).show(); } }); builder.show(); }
David Crow
"Он передает ошибку при попытке вызвать виртуальный метод void android.widget.ImageView.setImageURI(android.net-да.Uri) по ссылке на нулевой объект"
Что вполне ожидаемо, так как вы звоните findViewById()
в контексте деятельности, а не диалога. Вот почему он возвращается null
.