调用另一个有错误的类的函数

时间:2018-04-03 14:10:22

标签: android

我有2个课程:主要和图像。 我的问题是如何调用从Image到Main的函数,因为我有这个错误:Non-static method 'pickImg()' cannot be referenced from a static context

  • Main =主程序
  • Image =通过摄像头捕获/图库和裁剪来获取图像

Main.java

public void getImg(){
    ImageView iv1 = findViewById(R.id.imgVw);
    Bitmap img = Image.pickImg();
    iv1.setImageBitmap(img);
}

Image.java

public void pickImg() {
    try {
        Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(captureIntent, CAMERA_CAPTURE);
    } catch (ActivityNotFoundException anfe) {
        Toast toast = Toast.makeText(this, "This device doesn't support the crop action!", Toast.LENGTH_SHORT);
        toast.show();
    }
}

我阅读了有关上述错误的一些主题,并尝试将public void pickImg()更改为public static Bitmap pickImg(Bitmap img)并将return放在最后以返回图片以完成上述错误,但我得到了一个错误到startActivityForResult。我还尝试使用@OverridepickImg()内创建另一个void函数,但我收到Annotations are not allowed here错误。

但是当我提出时(基于我读到的一些答案)

Image IPick = new Image();
Bitmap newI = IPick.pickImg();

public void pickImg()更改为public Bitmap pickImg()我没有收到任何错误,但我不知道将图像返回到Main的内容或方式,因为该函数只有try{}catch{}用于相机意图而且该函数是第一个需要的函数和一个将被调用来获取图像的函数。

任何帮助/建议/解决方法?

对于那些会问为什么我创建了2个而不是使用1的人,我创建了不同的类来避免Main.java中的长代码,因为我还有东西可以放在我的应用程序上。

[EDIT-TL; DR] 当我把我的代码放在Main.java上时,我可以用相机拍摄图像。但是,如果我将我的代码放在Image.java上并在Main.java上调用该函数,那就是我遇到问题的地方。我似乎无法将裁剪的图像放到imageview(应用程序崩溃)。

1 个答案:

答案 0 :(得分:0)

创建Image类的构造函数,并在构造函数中传递MainActivity引用 例如

class Image
{
 private MainActivity mActivity;

 public Image(MainActivity activity){
        this.mActivity=activity;
       }
}

&安培;然后从图像类调用主要活动方法。

mActivity.yourActivityMethod();