在非Activity类Android中覆盖方法

时间:2012-10-12 14:15:26

标签: java android override

我正在开发一款使用默认相机应用拍照的应用。现在我想检查是否拍了照片。

我读到SO可以用这种方法完成:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  ...
    }

我的问题是当我把这个方法放在我的类中时,这不是一个Activity类,我得到了错误:

“onActivityResult(..)方法必须覆盖或实现超类型方法”

我已经检查过,我的编译器设置为java 1.6。我的jre设置为1.6。

我该怎么办?

2 个答案:

答案 0 :(得分:3)

您需要Activity订单才能收到相机操作的结果。为什么要将代码放在其他类中?如果它只是为了重复使用/组织,那么为什么不从你的Activity打电话给你的其他班级?

public class SomeOtherClass {
    public static void someOtherMethod(int requestCode, int resultCode, Intent data){
        ...
    }
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    SomeOtherClass.someOtherMethod(requestCode,resultCode,data);
    ...
}

答案 1 :(得分:2)

您只能从另一个Activity或Fragment中的Activity获取结果。 因此,您只能从扩展Activity或其中一个后代的类中扩展onActivityResult()(这实际上是与java相关的而不是与android相关的)。 此外,您必须在调用startActivityForResult()的同一活动中扩展和定义onActivityResult()。

如果你需要在另一个不扩展Activity的类中执行代码,你可以简单地实现自己的方法并从内部调用onActivityResult()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  if(requestCode == MY_REQUEST_CODE && resultCode == RESULT_OK)
   {
     MyClass object = new MyClass(); //or maybe it's already instantiated and it is defined as a field
     object.myCustomMethod(data); //pass it data or one of it's extras
   }

}