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