0

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

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

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

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

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

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

我该怎么办?

4

2 回答 2

3

您需要一个Activityon 命令来接收相机动作的结果。为什么要将代码放在其他类中?如果只是为了重用/组织,那么为什么不直接从你的其他班级打电话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);
    ...
}
于 2012-10-12T14:42:16.430 回答
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
   }

}
于 2012-10-12T14:38:55.067 回答