Cannot find symbol variable

While compiling my code I am getting this error

error: cannot find symbol variable DrawingImageView

Can someone lead me to how to overcome this?

package rectangle.android.com.rectangletouch;

import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.auth.api.signin.GoogleSignInClient;
import com.google.android.gms.drive.DriveClient;
import com.google.android.gms.drive.DriveResourceClient;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class MainActivity extends AppCompatActivity implements ActivityCompat.OnRequestPermissionsResultCallback{

    private static final String TAG = "MEDIA";
    private TextView tv;
    private ImageView drawingImageView;
    private static boolean show_state;
    private int height, width;
    private static Date lastDate;
    private static int iSwitch_num;
    private static final String TAGDRIVE = "drive";

    private static String write_Str;
//    private static String read_str;
    private static final int REQUEST_WRITE_PERMISSION = 786;
    private static final int REQUEST_READ_PERMISSION = 785;

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == REQUEST_WRITE_PERMISSION && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            writeToSDFile(write_Str);
        }
//        if (requestCode == REQUEST_READ_PERMISSION && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//            read_str = readFromSDFile();
//        }
    }
    private void request_write_Permissions() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_PERMISSION);
        } else {
            writeToSDFile(write_Str);
        }
    }
//    private void request_read_Permissions() {
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//            requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_READ_PERMISSION);
//        } else {
//            read_str = readFromSDFile();
//        }
//    }
    public class MyData{
        private boolean show_state;
        private int switch_num;
        private Date lastDate;
        public MyData(boolean show_state, int switch_num, Date lastDate){
            this.show_state = show_state;
            this.switch_num = switch_num;
            this.lastDate = lastDate;
        }
        public String getShow_State(){
            return show_state? "show":"hide";
        }
        public int getSwitch_num(){
            return switch_num;
        }
        public Date getLastDate(){
            return lastDate;
        }
        public String toString(){
            SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss");
            String date = format.format(getLastDate());
            return String.valueOf(getShow_State()) + "\n" + String.valueOf(getSwitch_num()) + "\n" + date;
        }
    }
    private String getCertificateSHA1Fingerprint(Context mContext) {
        PackageManager pm = mContext.getPackageManager();
        String packageName = mContext.getPackageName();
        int flags = PackageManager.GET_SIGNATURES;
        PackageInfo packageInfo = null;
        try {
            packageInfo = pm.getPackageInfo(packageName, flags);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        Signature[] signatures = packageInfo.signatures;
        byte[] cert = signatures[0].toByteArray();
        InputStream input = new ByteArrayInputStream(cert);
        CertificateFactory cf = null;
        try {
            cf = CertificateFactory.getInstance("X509");
        } catch (CertificateException e) {
            e.printStackTrace();
        }
        X509Certificate c = null;
        try {
            c = (X509Certificate) cf.generateCertificate(input);
        } catch (CertificateException e) {
            e.printStackTrace();
        }
        String hexString = null;
        try {
            MessageDigest md = MessageDigest.getInstance("SHA1");
            byte[] publicKey = md.digest(c.getEncoded());
            hexString = byte2HexFormatted(publicKey);
        } catch (NoSuchAlgorithmException e1) {
            e1.printStackTrace();
        } catch (CertificateEncodingException e) {
            e.printStackTrace();
        }
        return hexString;
    }

    @NonNull
    public static String byte2HexFormatted(byte[] arr) {
        StringBuilder str = new StringBuilder(arr.length * 2);
        for (int i = 0; i < arr.length; i++) {
            String h = Integer.toHexString(arr[i]);
            int l = h.length();
            if (l == 1) h = "0" + h;
            if (l > 2) h = h.substring(l - 2, l);
            str.append(h.toUpperCase());
            if (i < (arr.length - 1)) str.append(':');
        }
        return str.toString();
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.e("SHA1:", getCertificateSHA1Fingerprint(this.getBaseContext()));
        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        height = displayMetrics.heightPixels;
        width = displayMetrics.widthPixels;
        String read_str = readFromSDFile();
//        request_read_Permissions();
        Intent intent = new Intent(getBaseContext(), RetrieveContentsActivity.class);
        intent.putExtra("string", read_str);
        startActivity(intent);
        drawRectangle(show_state);
    }
    public void drawRectangle(boolean type){
        drawingImageView = (ImageView) this.findViewById(R.id.DrawingImageView);
        Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager()
                .getDefaultDisplay().getWidth(), (int) getWindowManager()
                .getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        drawingImageView.setImageBitmap(bitmap);
        Paint paint = new Paint();
        paint.setColor(Color.GREEN);
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
        paint.setStrokeWidth(10);
        float leftx, topy, rightx, bottomy;
        if(type){
            leftx = width / 2 - 40;
            topy = height / 2 - 40;
            rightx = width / 2 + 40;
            bottomy = height / 2 + 40;
        } else{
            leftx = 0;
            topy = 0;
            rightx = 0;
            bottomy = 0;
        }
        canvas.drawRect(leftx, topy, rightx, bottomy, paint);
    }
    private boolean checkExternalMedia(){
        boolean mExternalStorageAvailable = false;
        boolean mExternalStorageWriteable = false;
        String state = Environment.getExternalStorageState();

        if (Environment.MEDIA_MOUNTED.equals(state)) {
            // Can read and write the media
            mExternalStorageAvailable = mExternalStorageWriteable = true;
            return true;
        } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            // Can only read the media
            mExternalStorageAvailable = true;
            mExternalStorageWriteable = false;
            return false;
        } else {
            // Can't read or write
            mExternalStorageAvailable = mExternalStorageWriteable = false;
            return false;
        }
    }
    public String getExternalSdCardPath() {
        String path = null;

        File sdCardFile = null;
        List<String> sdCardPossiblePath = Arrays.asList("sdcard", "external_sd", "ext_sd", "external", "extSdCard", "SDCARD");

        for (String sdPath : sdCardPossiblePath) {
            File file = new File("/", sdPath);

            if (file.isDirectory() && file.canWrite()) {
                path = file.getAbsolutePath();

                String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());
                File testWritable = new File(path, "test_" + timeStamp);

                if (testWritable.mkdirs()) {
                    testWritable.delete();
                }
                else {
                    path = null;
                }
            }
        }

        if (path != null) {
            sdCardFile = new File(path);
        }
        else {
            sdCardFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
        }

        return sdCardFile.getAbsolutePath();
    }
    private void writeToSDFile(String str){
        File dir = new File(getExternalSdCardPath() + "/rectangle_show");
        if(!dir.exists()){
            dir.mkdirs();
        }
        File file = new File(dir, "Rectangle.txt");
        try {
            FileOutputStream f = new FileOutputStream(file);
            PrintWriter pw = new PrintWriter(f);
            pw.print(str);
            pw.flush();
            pw.close();
            f.close();
            String msg = "File written to "+ file.getPath();
            Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            Log.i(TAG, "******* File not found. Did you" +
                    " add a WRITE_EXTERNAL_STORAGE permission to the   manifest?");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Nullable
    private String readFromSDFile(){
        File dir = new File(getExternalSdCardPath() + "/rectangle_show");
        File file = new File(dir, "Rectangle.txt");
        try {
            StringBuffer fileContent = new StringBuffer("");
            byte[] buffer = new byte[1024];
            FileInputStream f = new FileInputStream(file);
            int n;
            while ((n = f.read(buffer)) != -1)
            {
                fileContent.append(new String(buffer, 0, n));
            }
            String data = fileContent.toString();
            String[] separted = data.split("\n");
            if(separted[0].equals("show")){
                show_state = true;
            } else {
                show_state = false;
            }
            try{
                iSwitch_num = Integer.parseInt(separted[1]);
            }catch (NumberFormatException e){
                e.printStackTrace();
            }
            SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss");
            try{
                lastDate = format.parse(separted[2]);
            } catch (ParseException e){
                e.printStackTrace();
            }
            return data;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            show_state = false;
            iSwitch_num = 0;
            lastDate = Calendar.getInstance().getTime();
            Log.i(TAG, "******* File not found. Did you" +
                    " add a WRITE_EXTERNAL_STORAGE permission to the   manifest?");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event){
        super.onTouchEvent(event);
        if(event.getAction() == MotionEvent.ACTION_DOWN){
            Date nowDate = Calendar.getInstance().getTime();
            if ((nowDate.getTime() - lastDate.getTime()) / 1000 < 1){
                Toast.makeText(this, "Please touch after 5s", Toast.LENGTH_SHORT).show();
                return false;
            }
            lastDate = nowDate;
            if(!show_state){
                drawRectangle(true);
                show_state = true;
            } else{
                drawRectangle(false);
                show_state = false;
            }
            iSwitch_num++;
            MyData myData = new MyData(show_state, iSwitch_num, lastDate);
            if(checkExternalMedia()){
                String out_str = myData.toString();
                write_Str = out_str;
                request_write_Permissions();
                Intent intent = new Intent(getBaseContext(), QueryFilesActivity.class);
                intent.putExtra("string", out_str);
                startActivity(intent);
            } else{
                Toast.makeText(this, "SD Card is removed or write-protected!", Toast.LENGTH_SHORT).show();
            }
            return true;
        }
        return false;
    }
}

Open in new window

LVL 43
Saqib Husain, SyedEngineerAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

David Johnson, CD, MVPOwnerCommented:
java is not supported on android devices without rooting the device
0
George WaltonRemote Administrator LMCommented:
Wrong declaration of variable drawingImageView in Class MainActivity not in  the function  public void drawRectangle
private ImageView drawingImageView;
redaclare as Public out of class, or use subfunction with variable
0
Saqib Husain, SyedEngineerAuthor Commented:
Thanks for both the responses.

This program had been working as is but has gone berserk now. I only changed the background to black from white in the layout and the display to full screen. Since then bringing it back to the original also does not work.

Anyhow, can you please do the change to the code. I am not sure I understand how you want me to do it. I am new to this sector.

Thanks in advance.
0
Angular Fundamentals

Learn the fundamentals of Angular 2, a JavaScript framework for developing dynamic single page applications.

krakatoaCommented:
Your code declares "drawingImageView", but your error cannot find "DrawingImageView". Java is case sensitive.
0
Saqib Husain, SyedEngineerAuthor Commented:
I changed it accordingly but the error remained the same. From the looks I have a feeling that there would be something wrong with the imports.
0
krakatoaCommented:
So is your error occuring at line 182?
0
Saqib Husain, SyedEngineerAuthor Commented:
Yes, the last part
0
krakatoaCommented:
Well then I'd suggest that whatever R is, it hasn't got a reference to (the) ImageView object.
0
krakatoaCommented:
@ Saqib Husain, Syed

Any more you'd like to ask here? Obviously you can close the question if it didn't produce what you wanted in the end.
krakatoa
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
AndroidDevelopers

From novice to tech pro — start learning today.