Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio如何检查图像视图是否已显示图像,如果已显示,请禁用意图_Java_Android_Android Intent_Imageview - Fatal编程技术网

Java Android Studio如何检查图像视图是否已显示图像,如果已显示,请禁用意图

Java Android Studio如何检查图像视图是否已显示图像,如果已显示,请禁用意图,java,android,android-intent,imageview,Java,Android,Android Intent,Imageview,我正在制作一个具有以下布局的应用程序:在该应用程序中,我使用“拍照”按钮从手机中调用相机意图来拍照。图片显示在图像视图中(在布局中以红色勾勒) 我还使用Save按钮通过intent将图片保存到gallery。我还使用签名按钮来捕获用户的签名。签名有自己的布局。布局包括以下内容:但是,假设我打开应用程序,在当前没有显示图像时点击保存按钮。我的“保存”按钮目前仍然有效,并在没有图片的情况下打开图库。在我的签名布局中,保存按钮也会发生同样的情况。如果当前没有签名,则“保存”按钮仍会保存 如何将其编码到

我正在制作一个具有以下布局的应用程序:在该应用程序中,我使用“拍照”按钮从手机中调用相机意图来拍照。图片显示在图像视图中(在布局中以红色勾勒)

我还使用Save按钮通过intent将图片保存到gallery。我还使用签名按钮来捕获用户的签名。签名有自己的布局。布局包括以下内容:但是,假设我打开应用程序,在当前没有显示图像时点击保存按钮。我的“保存”按钮目前仍然有效,并在没有图片的情况下打开图库。在我的签名布局中,保存按钮也会发生同样的情况。如果当前没有签名,则“保存”按钮仍会保存

如何将其编码到可以检查当前是否已显示图片或已显示签名的位置,如果未显示,则禁用签名和主应用程序布局中的保存按钮。我知道禁用按钮的语法是:
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文件(即:driveActivity.java)):


你可以像我一样,按照下面给出的步骤来做

  • 生成一个
    Boolean
    变量,并将其值初始化为
    false
  • 当您从Intent获取图像时,将其值设置为true
  • 现在,您可以检查
    按钮
    单击,就像值为
    false一样,然后执行以下操作
    不保存图片或数据,如果值为
    true
    ,则保存图像 或者你的数据

这对我很有用。

在保存ImageView的布局中,您可以对照片的ImageView使用“tag”属性;如果标记为“false”,则没有与ImageView关联的图像,然后您可以禁用保存按钮;如果为“true”,则有一个,您可以启用保存按钮

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:tag="false" />
无论何时拍照,都应将ImageView的标记更改为“true”

编辑:

当您使用不同的活动进行签名时,还必须使用
startActivityForResult()
,它将启动SignatureActivity并在完成后等待结果;如果收到成功的签名,您可以按照上述步骤将签名图像标记设置为“真”,否则设置为“假”。
您可以找到如何使用
startActivityForResult()

您是否尝试使用
onActivityResult()
方法?@Boken没有!我听说过该方法,但从未使用过
<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);
}
image.setTag("true");