Member 13535164 Ответов: 0

Как изменить внутренний вид изображения 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.

0 Ответов