Android Studio Как проверить, отображает ли изображение уже изображение, если это так, отключите намерение - PullRequest
0 голосов
/ 09 марта 2019

Я создаю приложение со следующим макетом: Макет основного приложения В приложении я использую кнопку «Сделать фото», чтобы вызвать намерение камеры с телефона сделать снимок.Изображение отображается в виде изображения (выделено красным на макете).

Я также использую кнопку Сохранить, чтобы сохранить изображение в галерее через намерение.Я также использую кнопку подписи, чтобы захватить подпись пользователя. Подпись имеет свой собственный макет.Макет состоит из следующего: Макет подписи Тем не менее, допустим, я открываю приложение и нажимаю кнопку Сохранить, когда в данный момент изображение не отображается.Моя кнопка Сохранить в настоящее время все еще работает и поднимает галерею, несмотря на отсутствие изображения.То же самое происходит с кнопкой сохранения в моем макете подписи.Если в настоящее время нет подписи, кнопка сохранения все еще сохраняется.

Как бы я закодировал ее там, где я могу проверить, есть ли уже показанное изображение или уже показана подпись, и если нет, кнопки сохраненияв моей подписи и макете основного приложения отключены.Я знаю, что для отключения кнопки используется следующий синтаксис: myButton.setEnabled(false);

У меня есть следующий код для кнопки сохранения в основном макете приложения:

 //this save button is for the gallery app after you take a photo
 saveButton.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            //launch the gallery app intent
            Intent intent = new Intent();
            intent.setAction(android.content.Intent.ACTION_VIEW);
            intent.setType("image/*");
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
            Toast.makeText(DriverActivity.this, "Image Saved to Gallery", Toast.LENGTH_SHORT).show();
            /*if there is currently no image, disable save button and display a toast message
            Toast.makeText(DriverActivity.this, "There's no image currently shown.", Toast.LENGTH_SHORT).show();*/

        }
    });
    // restoring storage image path from saved instance state
    // otherwise the path will be null on device rotation
    restoreFromBundle(savedInstanceState);

Тогда у меня есть этот код дляподпись:

//this is for signature
    signatureButton.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            /*// Use an intent to launch an email app.
            // Send the order summary in the email body.
            Intent intent = new Intent(Intent.ACTION_SENDTO);
            intent.setData(Uri.parse("mailto:")); // only email apps should handle this
            intent.putExtra(Intent.EXTRA_SUBJECT,
                    getString(R.string.order_summary_email_subject));
            if (intent.resolveActivity(getPackageManager()) != null) {
                startActivity(intent);
            }*/
            Intent intent = new Intent(DriverActivity.this, SignatureActivity.class);
            startActivity(intent);
            Toast.makeText(DriverActivity.this, "Now Loading Signature Sign", Toast.LENGTH_LONG).show();
        }
    });

Этот фрагмент кода взят из моего файла SignatureActivity.java (обратите внимание, что два приведенных выше примера кода взяты из другого файла Activity.java (т. е. DriverActivity.java):

//capture signature
    btnSave.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {

            view.setDrawingCacheEnabled(true);
            mSignature.save(view,StoredPath);
            Intent intent2 = new Intent(getBaseContext(), DriverActivity.class);
            startActivity(intent2);
            finish();
            Toast.makeText(getApplicationContext(), "Successfully Saved", Toast.LENGTH_SHORT).show();

        }
    });

Ответы [ 2 ]

1 голос
/ 09 марта 2019

Вы можете сделать это, следуя приведенным ниже шагам, как я сделал

  • Создайте переменную Boolean и инициализируйте ее значение как false
  • Когда вы получили изображение изНамерение устанавливает его значение true
  • Теперь вы можете проверить Button щелкните, как если бы значение было false, затем не сохраняйте изображение или данные, а если значение true, то сохраните изображение или вашданные.

У меня это сработало.

0 голосов
/ 09 марта 2019

в макете, который содержит ImageView, вы можете использовать атрибут «тег» для ImageView фотографии;если тег имеет значение «false», то с ImageView не связано изображение, и вы можете отключить кнопку «Сохранить»;если это «правда», значит, есть одна, и вы можете включить кнопку сохранения.

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:tag="false" />

Поведение

ImageView image = findViewById(R.id.image);

if ((Boolean) image.getTag()) { // No image
    // Disable save button
    mBtnSave.setEnabled(false);
} else {
    mBtnSave.setEnabled(true);
}

Всякий раз, когда вы делаете фотографию, вы должны изменить меткуImageView в "true"

image.setTag("true");

Редактировать:

Поскольку вы используете другое действие для подписи, вы также должны использовать startActivityForResult(), который запустит SignatureActivityи ждет результатов, когда это будет сделано;Вы можете следовать вышеупомянутой процедуре установки тега изображения подписи, чтобы быть или "верным", если вы получили успешную подпись, или "ложным", если нет. Здесь вы можете найти, как использовать startActivityForResult()

...