Java – R symbols and methods cannot be resolved

R symbols and methods cannot be resolved… here is a solution to the problem.

R symbols and methods cannot be resolved

The project was previously built with Eclipse and ran smoothly. Now that I’ve imported it into Android Studio, it gives me some errors. I tried to clean, rebuild, invalidate/restart cache for my project, and sync with Gradle files. However, none of this is for me. The code “cropImageView.getEdge()” and “cropImageView.getCircleData()” in my MainActivity .java also get errors. I’m not sure if there’s a problem with the cropper library. Does anyone know what went wrong?

This is the error I have gotten

My MainActivity .java:

public class MainActivity extends AppCompatActivity {

static Uri outPutfileUri;
public String filepath = "";
public static CropImageView cropImageView;
public static final int CAMERA_IMAGE =2;
public static final int GALLERY_CHOOSER_INTENT = 3;
public static final int GALLERY_KITKAT_INTENT_CALLED= 4;
public static Bitmap activeBmp;
public static Bitmap originalBmp;
private static final int DEFAULT_ASPECT_RATIO_VALUES = 10;
private static final String ASPECT_RATIO_X = "ASPECT_RATIO_X";
private static final String ASPECT_RATIO_Y = "ASPECT_RATIO_Y";
private int mAspectRatioX = DEFAULT_ASPECT_RATIO_VALUES;
private int mAspectRatioY = DEFAULT_ASPECT_RATIO_VALUES;
ImageView croppedImageView;
File file;
ImageButton btImage,btCrop,btProceed;
CroppingInstructionDlg dialog;

CheckBox cb_savePreferencedialog;
public static final String Save_CheckboxSettingdialog = "MyCheckBoxSettingdialogforcroppingactivity";
boolean checkedCheckboxdialog=false;
Bitmap croppedImage;
boolean cropped=false;

 this is very important to use the navtive opencv's library
     static {
            if (! OpenCVLoader.initDebug()) {
                 Handle initialization error
                Log.d("ERROR", "Unable to load OpenCV");
            }
            else
            {
                Log.d("SUCCESS", "OpenCV loaded");
            }

}

@Override

protected void onRestoreInstanceState(Bundle bundle) {
    super.onRestoreInstanceState(bundle);
    mAspectRatioX = bundle.getInt(ASPECT_RATIO_X);
    mAspectRatioY = bundle.getInt(ASPECT_RATIO_Y);
}

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

final SharedPreferences sp = getSharedPreferences("activities", MODE_PRIVATE);

dialog = new CroppingInstructionDlg(MainActivity.this);

cb_savePreferencedialog = (CheckBox)dialog.findViewById(R.id.cb_savePreferencedialog);

SharedPreferences prefEditdialog = getSharedPreferences(Save_CheckboxSettingdialog, MODE_PRIVATE); 

if(prefEditdialog.contains("CheckBoxValueDialog1")){

cb_savePreferencedialog.setChecked(true);
            }
            else
            {
                openDialoginstruction();
            }

cropImageView = (CropImageView) findViewById(R.id.CropImageView);
        croppedImageView = (ImageView) findViewById(R.id.croppedImageView);
        cropImageView.setVisibility(View.GONE);
        croppedImageView.setVisibility(View.GONE);

btImage=(ImageButton) findViewById(R.id.btImage);
        btImage.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
                List<String> data= new ArrayList<String>();
                data.add("Import from local device.");
                data.add("Take camera image.");
                AdapterGetImage adapter = new AdapterGetImage(MainActivity.this);

adapter.setData(data);

new AlertDialog.Builder(MainActivity.this).setAdapter(adapter, new DialogInterface.OnClickListener() {

@Override
                    public void onClick(DialogInterface dialog, int which) {
                     TODO - Code when list item is clicked (int which - is param that gives you the index of clicked item)

if (which==0) {
                            getFromGallery();
                        }
                        if(which==1)
                        {
                            getImageFromCamera();
                        }
                    }

})
               .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

@Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                })

.setCancelable(false)
                .show();

}
        });
        btCrop=(ImageButton) findViewById(R.id.btCrop);
        btCrop.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
                if(cropImageView.getVisibility() == View.VISIBLE){
                    croppedImage = cropImageView.getCroppedImage();
                    size test
                     croppedImage = croppedImage.createScaledBitmap(croppedImage, activeBmp.getWidth(), ((activeBmp.getWidth() * activeBmp.getHeight()) / activeBmp.getWidth()), true);
                    croppedImageView.setVisibility(View.VISIBLE);

croppedImageView.setImageBitmap(croppedImage);
                    activeBmp = croppedImage;
                    globalVar.edgeData= cropImageView.getEdge();
                    globalVar.gatheredData= cropImageView.getCircleData();
                    cropped=true;
                    }
                    else
                    {
                        Toast.makeText(MainActivity.this, "Please select your desired image before using the cropping function.", Toast.LENGTH_LONG).show();
                    }
              }
        });

btProceed = (ImageButton)findViewById(R.id.btProceed);
        btProceed.setOnClickListener(new OnClickListener() {

@Override
            public void onClick(View arg0) {
                 TODO Auto-generated method stub
                if(cropImageView.getVisibility() == View.VISIBLE){
                    if(cropped)
                    {
                    try {
                        InternalStorage.writeBitmap(MainActivity.this,"image", activeBmp);
                        InternalStorage.writeBitmap(MainActivity.this,"originalimage", originalBmp);

Intent intent = new Intent(MainActivity.this, EditImageActivity.class);
                        startActivity(intent);
                    } catch (IOException e) {
                         TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    }
                    else
                    {
                        Toast.makeText(MainActivity.this, "Please crop your desired image before proceeding to the next step.", Toast.LENGTH_LONG).show();
                    }
                }
                else
                {
                    Toast.makeText(MainActivity.this, "Please select your desired image before proceeding to the next step.", Toast.LENGTH_LONG).show();
                }

}

});

if (savedInstanceState != null) {
             String savedText = savedInstanceState.getString(KEY_TEXT_VALUE);
            if (!savedInstanceState.getString("filepath").equals("")) {
                filepath = savedInstanceState.getString("filepath");
                 mTextView.setText(savedText);
                LoadPicture(filepath);
                    croppedImageView.setImageBitmap(globalVar.CroppedImage);
                croppedImageView.setVisibility(View.VISIBLE);
                cropImageView.setVisibility(View.VISIBLE);
            }
        }

}

protected void onSaveInstanceState(Bundle bundle) {
    super.onSaveInstanceState(bundle);
    bundle.putInt(ASPECT_RATIO_X, mAspectRatioX);
    bundle.putInt(ASPECT_RATIO_Y, mAspectRatioY);
     if (!filepath.equals("")) {
    if (filepath != null) {
        bundle.putString("filepath", filepath);
    } else {
        bundle.putString("filepath", "");
    }
    if(cropped==true)
    {
        globalVar.CroppedImage= Bitmap.createBitmap(croppedImage);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
     Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
     Handle action bar item clicks here. The action bar will
     automatically handle clicks on the Home/Up button, so long
     as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId();
    if(id == R.id.About_Us)
    {
        openDialog();
    }

return super.onOptionsItemSelected(item);
}

cf code here

@RequiresApi(api = Build.VERSION_CODES. KITKAT)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    try {
        if (requestCode == GALLERY_CHOOSER_INTENT) {
            if (null == data) return;

String selectedImagePath;
            Uri selectedImageUri = data.getData();

MEDIA GALLERY
            selectedImagePath = ImageFilePath.getPath(getApplicationContext(), selectedImageUri);

cropImageView.requestLayout();
            LoadPicture(selectedImagePath);
            cropImageView.setVisibility(View.VISIBLE);
        } 
         if(requestCode ==CAMERA_IMAGE)
            {   

if (resultCode == Activity.RESULT_OK) {

cropImageView.requestLayout();
                     if(!filepath.equals(""))
                    if (outPutfileUri.toString() != null) {
                          this.filepath=outPutfileUri.getPath();
                        LoadPicture(outPutfileUri.getPath());
                        cropImageView.setVisibility(View.VISIBLE);

}
             }

}

} catch (Throwable ex) {
        Toast.makeText(MainActivity.this, ex.toString(), Toast.LENGTH_LONG).show();

}
}

public String getGalleryImagePath(Intent data) {
    try {
        Uri imgUri = data.getData();
        String filePath = "";
        if (data.getType() == null) {
             For getting images from default gallery app.
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Cursor cursor = getContentResolver().query(imgUri,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            filePath = cursor.getString(columnIndex);
            cursor.close();
        } else if (data.getType().equals("image/jpeg")
                || data.getType().equals("image/png")) {
            filePath = imgUri.getPath();
        }
        return filePath;
    } catch (Exception e) {
        return null;
    }

}

private String getPath(Uri uri) {
    if( uri == null ) {
        return null;
    }

String[] projection = { MediaStore.Images.Media.DATA };

Cursor cursor;
    if(Build.VERSION.SDK_INT >19)
    {
         Will return "image:x*"
        String wholeID = DocumentsContract.getDocumentId(uri);
         Split at colon, use second item in the array
        String id = wholeID.split(":")[1];
         where id is equal to             
        String sel = MediaStore.Images.Media._ID + "=?";

cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
                                      projection, sel, new String[]{ id }, null);
    }
    else
    {
        cursor = getContentResolver().query(uri, projection, null, null, null);
    }
    String path = null;
    try
    {
        int column_index = cursor
        .getColumnIndex(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        path = cursor.getString(column_index).toString();
        cursor.close();
    }
    catch(NullPointerException e) {

}
    return path;
}

public String getCameraImagePath(Intent data) {
    try {
        Uri imgUri = data.getData();
        String filePath = "";
        if (data.getType() == null) {
             For getting images from default gallery app.
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Cursor cursor = getContentResolver().query(imgUri,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            filePath = cursor.getString(columnIndex);
            cursor.close();
        } else if (data.getType().equals("image/jpeg")
                || data.getType().equals("image/png")) {
            filePath = imgUri.getPath();
        }
        return filePath;
    } catch (Exception e) {
        return null;
    }

}

public void LoadPicture(String filepath) {

if (!new File(filepath).exists()) {
        Toast.makeText(this, "Image does not exist.", Toast.LENGTH_SHORT)
                .show();
    } else {

Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int screenwidth = size.x;
        int screenheight = size.y;

int picwidth = 0;
        if(screenwidth < screenheight)
        {
            picwidth = screenwidth;
        }
        else
        {
            picwidth = screenheight;
        }
        picwidth = (int) (0.8 * picwidth);

Bitmap img = decodeSampledBitmapFromResource(filepath, picwidth);

if (img.getWidth() < img.getHeight()) {
            Bitmap rotatedbmp = RotateBitmap(img, 90);
            img = rotatedbmp;
        } else {
            ;
        }
        if (img.getWidth() > img.getHeight()) {
            if (img.getWidth() > picwidth) {
                cropImageView.getLayoutParams().height = picwidth
                        * img.getHeight() / img.getWidth();
                cropImageView.getLayoutParams().width = picwidth;

img = Bitmap.createScaledBitmap(img, picwidth,
                        ((picwidth * img.getHeight()) / img.getWidth()), true);
            } else {
                cropImageView.getLayoutParams().width = img.getWidth();
                cropImageView.getLayoutParams().height = img.getHeight();
            }

} else if (img.getHeight() > img.getWidth()) {
            if (img.getHeight() > picwidth) {
                cropImageView.getLayoutParams().height = picwidth;
                cropImageView.getLayoutParams().width = picwidth
                        * img.getWidth() / img.getHeight();

img = Bitmap.createScaledBitmap(img,
                        ((picwidth * img.getWidth()) / img.getHeight()), picwidth,
                        true);
            } else {
                cropImageView.getLayoutParams().width = img.getWidth();
                cropImageView.getLayoutParams().height = img.getHeight();
            }
        } else {// same square image
            if (img.getWidth() > picwidth) {
                cropImageView.getLayoutParams().height = picwidth;
                cropImageView.getLayoutParams().width = picwidth;
                img = Bitmap.createScaledBitmap(img, picwidth, picwidth, true);
            } else {
                cropImageView.getLayoutParams().width = img.getWidth();
                cropImageView.getLayoutParams().height = img.getHeight();
            }
        }
        activeBmp = null;
        activeBmp = img.copy(Bitmap.Config.ARGB_8888, true);
        originalBmp=img.copy(Bitmap.Config.ARGB_8888, true);

cropImageView.getLayoutParams().height = activeBmp.getHeight();
        cropImageView.getLayoutParams().width = activeBmp.getWidth();
        cropImageView.setImageBitmap(activeBmp);

croppedImageView.setImageBitmap(activeBmp);
        img.recycle();

}//else ends

}
public static Bitmap decodeSampledBitmapFromResource(String filepath,int reqWidth) {

 First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(filepath, options);

 Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqWidth);

 Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeFile(filepath, options);
}
public static Bitmap RotateBitmap(Bitmap source, float angle) {
    Matrix matrix = new Matrix();
    matrix.postRotate(angle);
    return Bitmap.createBitmap(source, 0, 0, source.getWidth(),
            source.getHeight(), matrix, true);
}
public static int calculateInSampleSize(BitmapFactory.Options options,
        int reqWidth) {
     Raw height and width of image
    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;

 if (height > reqHeight || width > reqWidth) {
    if (width > reqWidth) {
         final int halfHeight = height / 2;
        final int halfWidth = width / 2;

 Calculate the largest inSampleSize value that is a power of 2 and
         keeps both
         height and width larger than the requested height and width.
         while ((halfHeight / inSampleSize) > reqHeight
         && (halfWidth / inSampleSize) > reqWidth) {
        while ((halfWidth / inSampleSize) > reqWidth) {
            inSampleSize *= 2;
        }
    }

return inSampleSize;
}

public void openDialog() {

final AboutUsDlg dialog = new AboutUsDlg(this);  context, this etc.
    dialog.setTitle("About Us");

Button btnClose = (Button) dialog.findViewById(R.id.btOk);

btnClose.setOnClickListener(new View.OnClickListener() {

@Override
        public void onClick(View v) {
            dialog.dismiss();
        }

});

dialog.show();
}

public void getFromGallery()
{
    cf code

/*
     if (Build.VERSION.SDK_INT <23){
        final Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent, GALLERY_CHOOSER_INTENT);
    } else {
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("image/*");
        startActivityForResult(intent, GALLERY_KITKAT_INTENT_CALLED);
    }
    */
     final Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select File"),GALLERY_CHOOSER_INTENT);

final Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, GALLERY_CHOOSER_INTENT);

}
public void getImageFromCamera()
{
    Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

file = new File(Environment.getExternalStorageDirectory(),
            "APDColonyImage.jpg");
    globalVar.CameraImage=file;
            outPutfileUri = Uri.fromFile(file);

intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutfileUri);
            startActivityForResult(intent, CAMERA_IMAGE);

}

public void openDialoginstruction() {

cb_savePreferencedialog.setOnClickListener(new OnClickListener() {

@Override
          public void onClick(View v) {
                    is chkIos checked?
            if (((CheckBox) v).isChecked()) {

checkedCheckboxdialog=true;
            }
            else 
            {
                checkedCheckboxdialog=false;
            }

}
        });

Button btnClose = (Button) dialog.findViewById(R.id.btOk);

btnClose.setOnClickListener(new View.OnClickListener() {

@Override
            public void onClick(View v) {
                if(checkedCheckboxdialog==true){

SharedPreferences.Editor CheckBoxEditor = getSharedPreferences(Save_CheckboxSettingdialog, MODE_PRIVATE).edit();
                     CheckBoxEditor.putBoolean("CheckBoxValueDialog1", checkedCheckboxdialog);
                     CheckBoxEditor.commit();
                }
                else
                {
                    SharedPreferences.Editor CheckBoxEditor = getSharedPreferences(Save_CheckboxSettingdialog, MODE_PRIVATE).edit();
                    CheckBoxEditor.clear();
                    CheckBoxEditor.commit();
                }
                dialog.dismiss();
            }

});

dialog.show();

}

public boolean onKeyDown(int keyCode, KeyEvent event) {
         cleanup app, save preferences, etc.
     exitApplication() ;
         finish();  not working properly, especially not with asynchronous tasks running
         return moveTaskToBack(true);
        return super.onKeyDown(keyCode, event);
    }

public void exitApplication() {

AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Are you sure you want to exit?")

 Write the code below
                .setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int id) {

finish();

}
                        })

.setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {

}
                });

AlertDialog alertDialog = builder.create();
        alertDialog.show();

}

My activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=". MainActivity">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     android:orientation="vertical"
     >

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

<LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:weightSum="3" >

<ImageButton
                android:id="@+id/btImage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@+id/btCrop"
                android:layout_weight="1"
                android:adjustViewBounds="true"
                android:scaleType="fitCenter"
                android:src="@drawable/getimage_icon9" />

<ImageButton
                android:id="@+id/btCrop"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_weight="1"
                android:adjustViewBounds="true"
                android:scaleType="fitCenter"
                android:src="@drawable/crop_icon9" />

<ImageButton
                android:id="@+id/btProceed"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/btCrop"
                android:layout_weight="1"
                android:adjustViewBounds="true"
                android:scaleType="fitCenter"
                android:src="@drawable/next_icon9" />
        </LinearLayout>

<TextView
            android:id="@+id/tvCrop1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/Image"
            android:textAppearance="?android:attr/textAppearanceLarge" />
        <!--
        <com.edmodo.cropper.CropImageView
            xmlns:custom="http://schemas.android.com/apk/res-auto"
            android:id="@+id/CropImageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />
        -->

<com.edmodo.cropper.CropImageView
            xmlns:custom="http://schemas.android.com/apk/res-auto"
            android:id="@+id/CropImageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            custom:imageResource="@drawable/emptyimage"/>

<TextView
            android:id="@+id/tvCrop2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/Cropped_image"
            android:textAppearance="?android:attr/textAppearanceLarge" />

<ImageView
            android:id="@+id/croppedImageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:adjustViewBounds="true"
            android:scaleType="fitCenter"
            android:src="@drawable/emptyimage"
            tools:ignore="ContentDescription" />

</LinearLayout>

</ScrollView>

Solution

Just clean up the build and rerun the project. It will solve the problem automatically

Related Problems and Solutions